Я хочу протестировать интерфейс Runnable. Создайте экземпляр класса, реализующего интерфейс Runnable. А затем создайте три потока с помощью одного и того же экземпляра. Обратите внимание на то, как потоки совместно используют переменную поля экземпляра. Два вопроса: 1. Почему два результата не похожи на последовательность «20, 19, 18 .... 1, 0»? 2. Почему два результата отличаются друг от друга? (Я запускаю код дважды.) Код выглядит следующим образом:
public class ThreadDemo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestThread tt = new TestThread();
Thread t1 = new Thread(tt);
Thread t2 = new Thread(tt);
Thread t3 = new Thread(tt);
t1.start();
t2.start();
t3.start();
}
}
class TestThread implements Runnable {
public int tickets = 20;
public void run(){
while (tickets >= 0){
System.out.println(Thread.currentThread().getName() + ":the number of tickets is " + tickets--);
}
}
}
Я запускаю код дважды. Два результата показаны ниже. В первый раз:
Thread-1:the number of tickets is 20
Thread-2:the number of tickets is 18
Thread-2:the number of tickets is 16
Thread-0:the number of tickets is 19
Thread-2:the number of tickets is 15
Thread-1:the number of tickets is 17
Thread-2:the number of tickets is 13
Thread-0:the number of tickets is 14
Thread-2:the number of tickets is 11
Thread-1:the number of tickets is 12
Thread-2:the number of tickets is 9
Thread-0:the number of tickets is 10
Thread-2:the number of tickets is 7
Thread-1:the number of tickets is 8
Thread-2:the number of tickets is 5
Thread-0:the number of tickets is 6
Thread-2:the number of tickets is 3
Thread-1:the number of tickets is 4
Thread-2:the number of tickets is 1
Thread-0:the number of tickets is 2
Thread-1:the number of tickets is 0
Второй раз:
Thread-0:the number of tickets is 19
Thread-2:the number of tickets is 18
Thread-2:the number of tickets is 16
Thread-2:the number of tickets is 15
Thread-1:the number of tickets is 20
Thread-2:the number of tickets is 14
Thread-2:the number of tickets is 12
Thread-2:the number of tickets is 11
Thread-0:the number of tickets is 17
Thread-2:the number of tickets is 10
Thread-2:the number of tickets is 8
Thread-1:the number of tickets is 13
Thread-1:the number of tickets is 6
Thread-1:the number of tickets is 5
Thread-2:the number of tickets is 7
Thread-0:the number of tickets is 9
Thread-2:the number of tickets is 3
Thread-1:the number of tickets is 4
Thread-2:the number of tickets is 1
Thread-0:the number of tickets is 2
Thread-1:the number of tickets is 0