Fork-Join
什么是分而治之?
規(guī)模為N的問(wèn)題,N<閾值,直接解決,N>閾值,將N分解為K個(gè)小規(guī)模子問(wèn)題,子問(wèn)題互相對(duì)立,與原問(wèn)題形式相同,將子問(wèn)題的解合并得到原問(wèn)題的解
動(dòng)態(tài)規(guī)范
工作密取
workStealing
Fork/Join使用的標(biāo)準(zhǔn)范式
常用的并發(fā)工具類
CountDownLatch
作用:是一組線程等待其他的線程完成工作以后在執(zhí)行,加強(qiáng)版join
await用來(lái)等待,countDown負(fù)責(zé)計(jì)數(shù)器的減一
CyclicBarrier
讓一組線程達(dá)到某個(gè)屏障,被阻塞,一直到組內(nèi)最后一個(gè)線程達(dá)到屏障時(shí),屏障開(kāi)放,所有被阻塞的線程會(huì)繼續(xù)運(yùn)行CyclicBarrier(intparties)
CyclicBarrier(int parties, Runnable barrierAction),屏障開(kāi)放,barrierAction定義的任務(wù)會(huì)執(zhí)行
CountDownLatch和CyclicBarrier辨析
1、countdownlatch放行由第三者控制,CyclicBarrier放行由一組線程本身控制
2
、countdownlatch放行條件》=線程數(shù),CyclicBarrier放行條件=線程數(shù)
?
Semaphore
控制同時(shí)訪問(wèn)某個(gè)特定資源的線程數(shù)量,用在流量控制
?
Exchange
兩個(gè)線程間的數(shù)據(jù)交換,
?
Callable、Future和FutureTask
isDone,結(jié)束,正常還是異常結(jié)束,或者自己取消,返回true;
isCancelled 任務(wù)完成前被取消,返回true;
cancel(boolean):
[if !supportLists]1、? [endif]任務(wù)還沒(méi)開(kāi)始,返回false
[if !supportLists]2、? [endif]任務(wù)已經(jīng)啟動(dòng),cancel(true),中斷正在運(yùn)行的任務(wù),中斷成功,返回true,cancel(false),不會(huì)去中斷已經(jīng)運(yùn)行的任務(wù)
[if !supportLists]3、? [endif]任務(wù)已經(jīng)結(jié)束,返回false
包含圖片和文字的文檔的處理:圖片(云上),可以用future去取圖片,主線程繼續(xù)解析文字。