可以用Future。可以把任务放在一个queue里,然后任务线程从queue里取任务执行。结 果放在另一个queue里。如果queue空了,最后用Thread.join() in your main thread to wait in a blocking fashion for each Thread to complete。
g*g
33 楼
Threads in threadpool typically don't die, instead of using Thread.join, you should simple block on Fugure.get
thread
【在 l**********n 的大作中提到】 : 可以用Future。可以把任务放在一个queue里,然后任务线程从queue里取任务执行。结 : 果放在另一个queue里。如果queue空了,最后用Thread.join() in your main thread : to wait in a blocking fashion for each Thread to complete。
【在 g*****g 的大作中提到】 : I don't think so. Blocking on future get is not polling.
h*r
38 楼
这句话有点武断了。
【在 w**z 的大作中提到】 : it depends on which kind if thread pool the executor service us using. : whether the thread finishes the task has nothing to do with future.get.
""" Actor model其实和explicit thread分别不大,甚至也保留了deadlock的可能性(如果 有两个或以上的Actor交换信息而且对输入数据的时序敏感)。一般来说会把Actor model分解成task and data,然後把Actor model的输入输出换成queue。 """ 我也是觉得其实各种隐式的lock和race condition其实是无法避免的。 Actor 这些东西只是强迫大家多做解耦,然后少产生lock而已,有些lock还是不能避免 地用另外一种形式实现了.