Java 从子线程回调到父线程

Java 从子线程回调到父线程,java,Java,我有一个父线程。它的工作是对请求和初始化子线程进行排队。子线程应该从web服务获取数据并回调到父线程。父线程处理数据并启动另一个子线程。问题是回调方法中的所有内容都是由子线程而不是父线程处理的。有没有办法通过父线程处理回调?换句话说,子线程在调用回调方法后立即完成,而不进行处理 这需要一些设计,但对于初学者来说,如果主线程只等待子线程完成而不做任何事情,我看不出子线程有什么意义。另一方面,如果主线程必须为进一步的传入请求提供服务,那么它就不能同时为来自子线程的回调提供服务。你得重新考虑一下。一个

我有一个父线程。它的工作是对请求和初始化子线程进行排队。子线程应该从web服务获取数据并回调到父线程。父线程处理数据并启动另一个子线程。问题是回调方法中的所有内容都是由子线程而不是父线程处理的。有没有办法通过父线程处理回调?换句话说,子线程在调用回调方法后立即完成,而不进行处理

这需要一些设计,但对于初学者来说,如果主线程只等待子线程完成而不做任何事情,我看不出子线程有什么意义。另一方面,如果主线程必须为进一步的传入请求提供服务,那么它就不能同时为来自子线程的回调提供服务。你得重新考虑一下。一个想法是让一个线程收集请求并将它们推送到队列中。子线程将它们的事件推送到同一队列,并且有一个单独的线程处理队列中的事件——来自子线程的请求和响应


如果你觉得这件事不错,然后尽一切可能使用ExecutorService来处理作业队列。

正如Marko提到的,您可以使用ExecutorService,它在那里有未来的引用,您可以将运行作业的结果返回到其父线程。

检查我是否理解:线程:主-与用户交互->服务-队列请求和启动->处理器-处理请求(从web服务获取数据)->查看器-在屏幕上显示数据我必须有这么多线程还是可以做得更简单?你的意思是你实际上有一个GUI线程,并且想要将长操作(WS-call)卸载到一个非GUI线程?这就是你想要的吗?是的。我想知道的是,当我使用某个线程成功地从WS获取数据时,我是否必须创建新线程来显示数据,或者我是否可以调用父线程来执行此操作。我不想让WS-thread处理显示数据。如果你在问题中说得对的话,会容易得多。这个主题在这里和其他地方已经讨论过很多次了。您需要的唯一类是
SwingWorker
。你会发现,它使用起来非常简单。