【发布时间】:2016-05-24 19:38:53
【问题描述】:
看下面的代码。这个 sn-p 中的所有语句都在主线程中执行。 线程是独立的执行单元,即两个不同的线程可以同时执行,彼此独立,对吧?
这是否意味着一旦new Thread(new Producer()).start(); 语句的执行完成(即Producer 线程执行完毕,即在run() 方法之后的Producer 已返回)?
或者 JVM 只是在它调用第一个线程的start() 方法之后,即第一个Producer 线程正在运行?
public class ThreadsCoordinationUsingGuardedBlocks {
public static void main(String[] args) {
new Thread(new Producer()).start();
new Thread(new Consumer()).start();
}
}
【问题讨论】:
-
不能保证其中一个的执行顺序。这就是为什么 Java 和所有理智的编程语言确实提供了使执行可以同步的机制的原因。在 Java 中,一个这样的例子是
BlockingQueue。
标签: java multithreading concurrency java.util.concurrent java-threads