当前位置: 首页 > 面试题库 >

Java中的线程间通信

穆阳炎
2023-03-14
问题内容

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

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


问题答案:

这取决于通信的性质。

  • 它是双工的吗(即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



 类似资料:
  • 问题内容: Java上下文中的线程和进程之间有什么区别?用Java如何实现进程间通信和线程间通信?请给我指出一些现实生活中的例子。 问题答案: 根本的区别是线程位于相同的地址空间中,而进程位于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用以及更改共享对象,而进程是关于传递对象的序列化副本。 在实践中,Java线程间通信可以实现为对共享对象进行简单的Java方法调用,并引入适当的同步。或

  • 本文向大家介绍Java多线程中线程间的通信实例详解,包括了Java多线程中线程间的通信实例详解的使用技巧和注意事项,需要的朋友参考一下 Java多线程中线程间的通信 一、使用while方式来实现线程之间的通信 程序输出: 理解:线程Thread2不停地通过while语句检测这个条件(list.size()==5)是否成立 ,从而实现了线程间的通信。但是这种方式会浪费CPU资源。 二、wait no

  • 主要内容:实例如果你知道进程间通信,那么就很容易理解线程间通信。 当您开发两个或多个线程交换一些信息的应用程序时,线程间通信很重要。 有三个简单的方法和一个小技巧,使线程通信成为可能。 所有三种方法都列在下面 - 编号 方法 描述 1 使当前线程等到另一个线程调用方法。 2 唤醒在此对象监视器上等待的单个线程。 3 唤醒所有在同一个对象上调用的线程。 这些方法已被实现为中的最终()方法,因此它们在所有类中都可用

  • 前面一章讲了线程间同步,提到了信号量、互斥量、事件集等概念;本章接着上一章的内容,讲解线程间通信。在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取,根据读取到的全局变量值执行相应的动作,达到通信协作的目的。RT-Thread 中则提供了更多的工具帮助在不同的线程中间传递信息,本章会详细介绍这些工具。学习完本章,大家将学会

  • 问题 你的程序中有多个线程,你需要在这些线程之间安全地交换信息或数据 解决方案 从一个线程向另一个线程发送数据最安全的方式可能就是使用 queue 库中的队列了。创建一个被多个线程共享的 Queue 对象,这些线程通过使用 put() 和 get() 操作来向队列中添加或者删除元素。 例如: from queue import Queue from threading import Thread

  • 线程间通讯接口 模块   信号量   信号量接口     互斥量   互斥量接口     事件   事件接口     邮箱   邮箱接口     消息队列   消息队列接口     信号   信号接口   结构体 struct   rt_ipc_object   IPC基类控制块 更多...   宏定义 #define  RT_IPC_FLAG_FIFO   0x00   先进先出模式   #de