标签:卡住 需要 判断 扫描 完成 [] int 说明 forkjoin
fork是把task放到workqueue[]中,join的逻辑是先去取,取不到说明这之间的功夫,被别的线程取走了,取到了自己执行task,然后判断task是不是可以完成,如果没完成,说明要么是这个task正在执行,要么是递归成子task了,反正不管怎样。
递归的所有task,需要都被完成之后,才能算整个的task被完成,那么,如果某个线程被卡在某个task上了,回去扫描或者叫偷别的线程上的task,直到扫描不到或者被卡住的task完成(实现future接口就是干这个的)。
其实理解forkjoinpool就两点,一个递归,一个所有task都完成才算整个完成,在这之前,所有的?线程都应该在扫描没完成的task。
标签:卡住 需要 判断 扫描 完成 [] int 说明 forkjoin
原文地址:https://www.cnblogs.com/chuliang/p/9361794.html