Посмотрите на следующий код. Все операторы в этом фрагменте выполняются в основном потоке. Потоки — это отдельные единицы выполнения, то есть два разных потока могут выполняться одновременно, независимо друг от друга, верно?
Означает ли это, что оператор new Thread(new Consumer()).start();
будет выполнен после завершения выполнения оператора new Thread(new Producer()).start();
(то есть, когда поток Producer
завершит выполнение, то есть после того, как метод run()
Producer
возвратится)?
Или JVM просто получает и начинает выполнение инструкции new Thread(new Consumer()).start();
сразу после того, как она вызвала метод start()
первого потока, т. е. пока первый поток Producer
работает?
public class ThreadsCoordinationUsingGuardedBlocks {
public static void main(String[] args) {
new Thread(new Producer()).start();
new Thread(new Consumer()).start();
}
}
BlockingQueue
. - person fge   schedule 13.02.2016