我有一个父线程。它的工作是排队请求和init子线程。子线程应该从Web服务获取数据并回调到父线程。父线程处理数据并启动另一个子线程。问题是回调方法内部的所有内容都由子线程而不是父线程处理。有没有办法处理父线程的回调?换句话说,子线程在调用回调方法后立即完成而不处理它。
答案 0 :(得分:2)
你需要一些设计,但是对于初学者来说,如果主线程不会做任何事情而是等待孩子完成,我看不到子线程的重点。另一方面,如果主线程必须服务于进一步的传入请求,那么它也不能从子线程服务回调。你必须重新考虑一下。一个想法是一个线程收集请求并将它们推送到队列。子线程将它们的事件推送到同一队列,并且有一个单独的线程处理来自队列的事件 - 来自子线程的请求和响应。
如果这样的事情听起来不错,那么请务必使用ExecutorService
来处理作业的排队。
答案 1 :(得分:0)
正如Marko所说,你可以使用具有Future引用的ExecutorService,你可以将运行job的结果返回给它的父线程。