如何在java中实现异步线程间通信?

时间:2014-10-22 12:52:57

标签: java multithreading asynchronous asynchronous-postback

我正在开发一个代码,其中我有一个父线程和一个子线程。现在,我的场景如下所述,

  • 父线程启动子线程
  • 启动子线程后,它会继续工作。
  • 现在有一次子线程想要在主线程中调用方法
  • 然后用该方法异步调用主线程。

我还想澄清一下,我知道java中的并发包,但它是同步进行的,即主线程必须等待子线程直到它完成执行,但我希望主线程在子线程时做连续工作执行。

我的实现类似于SwingWorker java中的线程

1 个答案:

答案 0 :(得分:2)

你没有“在主线程中调用方法”。你唯一能做的就是实现一个特定的机制,主线程由主动,在子线程提供的对象上执行一个方法。

上面粗略地描述了Swing的机制所做的事情:“主”线程(在这种情况下,事件调度线程)从全局队列中取消对象,如果对象的类型合适,则调用run Runnable的关联实例上的方法。

要点:在Swing中,EDT不会“继续正常工作”;它专门等待其他线程告诉它通过这种机制做什么,否则只是阻塞,什么都不做。