小编典典

Java中的线程间通信

java

Java相互依赖的线程如何通信?

例如,我正在使用需要来自其他线程的数据的线程构建Web搜寻器。


阅读 258

收藏
2020-09-08

共1个答案

小编典典

这取决于通信的性质。

  • 它是双工的吗(即A与B对话,B与A对话)?
  • 是数据通信还是 完成 通信?

等等。

线程间通信的最简单,最可取的形式就是等待其他线程的完成。使用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或使用许多其他许多符号。

要深入研究并发性,必须阅读Java
Concurrency in
Practice

2020-09-08