有没有办法在两个完全独立的线程之间进行通信?

我试图在两个不共享任何 Java 对象的线程之间进行通信(我正在构建一个 Java 代理)。我需要的是以下内容:

Thread agentattachThread = ...;
otherThread.send("Hello");

这将像 Agent Attach 线程中的中断一样处理,如下所示:

public void msgHandler(String msg) {
    ...
}

Thread.onMessageReceived(msgHandler);

编辑- 考虑到我原来的帖子的答案,我的问题变成:默认情况下 JVM 是否提供一个同步对象,所有线程都可以引用该对象?

回答

从线程的线程“沟通”的唯一途径,而无需共享一些对象是通过Thread.interrupt()很显然,只有信号可以通过这个方式发送是一种true标志,而当它使用某些方法一样,接收器将只注意到它Thread.interrupted(),或方法那引发InterruptedException.

因为这是非常有限的,所以在提供应用程序所需接口的线程之间共享线程安全对象是标准做法。例如,您可以给每个线程一个相同的引用并以BlockingQueue这种方式发送消息。

任何公共的静态字段都是全局可见的,因此任何线程都可以通过这样的字段访问诸如队列之类的共享对象。

最接近 JVM 的“内置”的是系统属性;本质上,这是一个共享映射,任何线程都可以通过它设置或获取String类型条目。可能还有一些其他设施可能会以类似的方式被滥用,但我无法想象有任何理由在静态字段可用时使用这样的东西。


以上是有没有办法在两个完全独立的线程之间进行通信?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>