Java相互依赖的线程如何通信?
例如,我正在使用需要来自其他线程的数据的线程构建Web搜寻器。
这取决于通信的性质。
等等。
线程间通信的最简单,最可取的形式就是等待其他线程的完成。使用Future以下命令最容易做到:
Future
ExecutorService exec = Executors.newFixedThreadPool(50); final Future f = exec.submit(task1); exec.submit(new Runnable() { @Override public void run() { f.get(); // do stuff } });
在第一个任务完成之前,第二个任务将不会执行。
Java 5+具有 许多 并发实用程序来处理这种事情。这可能意味着使用LinkedBlockingQueues,CountDownLatch或使用许多其他许多符号。
LinkedBlockingQueue
CountDownLatch
要深入研究并发性,必须阅读Java Concurrency in Practice。