freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[計(jì)算機(jī)]實(shí)戰(zhàn)javaconcurrent-文庫(kù)吧

2025-08-08 16:03 本頁(yè)面


【正文】 es。 }/** * 關(guān)閉當(dāng)前ExecutorService * * @param timeout 以毫秒為單位的超時(shí)時(shí)間 */ public void destoryExecutorService(long timeout) { if (executorService != null amp。amp。 !()) { try { (timeout, )。 } catch (InterruptedException e) { ()。 } ()。 } } /** * 關(guān)閉當(dāng)前ExecutorService,隨后根據(jù)poolSize創(chuàng)建新的ExecutorService */ public void createExecutorService() { destoryExecutorService(1000)。 executorService = (poolSize)。 } /** * 調(diào)整線程池大小 * @see createExecutorService() */ public void setPoolSize(int poolSize) { = poolSize。 createExecutorService()。 }}這里要額外說明一下invokeAll()和invokeAny()方法。前者會(huì)執(zhí)行給定的所有CallableT對(duì)象,等所有任務(wù)完成后返回一個(gè)包含了執(zhí)行結(jié)果的ListFutureT,()都是true,可以用 ()拿到結(jié)果;后者只要完成了列表中的任意一個(gè)任務(wù)就立刻返回,返回值就是執(zhí)行結(jié)果。還有一個(gè)比較詭異的地方本代碼是在JDK ,如果在JDK ,很可能在invokeAll和invokeAny的地方出錯(cuò)。明明ValidationTask實(shí)現(xiàn)了 CallableNode,可是它死活不認(rèn),類型不匹配,這時(shí)可以將參數(shù)聲明由ListValidationTask改為 ListCallableNode。造成這個(gè)問題的主要原因是兩個(gè)版本中invokeAll和invokeAny的方法簽名不同, invokeAll(Collection? extends CallableT tasks),(CollectionCallableT tasks)。網(wǎng)上也有人遇到類似的問題(invokeAll() is not willing to acept a CollectionCallableT )。和其他資源一樣,線程池在使用完畢后也需要釋放,用shutdown()方法可以關(guān)閉線程池,如果當(dāng)時(shí)池里還有沒有被執(zhí)行的任務(wù),它會(huì)等待任務(wù)執(zhí)行完畢,在等待期間試圖進(jìn)入線程池的任務(wù)將被拒絕。也可以用shutdownNow()來關(guān)閉線程池,它會(huì)立刻關(guān)閉線程池,沒有執(zhí)行的任務(wù)作為返回值返回。Lock多線程編程中常常要鎖定某個(gè)對(duì)象,之前會(huì)用synchronized來實(shí)現(xiàn),現(xiàn)在又多了另一種選擇,那就是 。通過Lock能夠?qū)崿F(xiàn)更靈活的鎖定機(jī)制,它還提供了很多synchronized所沒有的功能,例如嘗試獲得鎖(tryLock())。使用Lock時(shí)需要自己獲得鎖并在使用后手動(dòng)釋放,這一點(diǎn)與synchronized有所不同,所以通常Lock的使用方式是這樣的:Java代碼Lock l = ...。()。try { // 執(zhí)行操作} finally { ()。}Lock l = ...。()。try {// 執(zhí)行操作} finally {()。},比較常用的應(yīng)該是ReentrantLock。以下范例中使用了ReentrantLock進(jìn)行節(jié)點(diǎn)鎖定:Java代碼package service。import 。import 。/*** 節(jié)點(diǎn)類** @author DigitalSonic*/public class Node { private String name。 private String wsdl。 private String result = PASS 。 private String[] dependencies = new String[] {}。 private Lock lock = new ReentrantLock()。 /** * 默認(rèn)構(gòu)造方法 */ public Node() { } /** * 構(gòu)造節(jié)點(diǎn)對(duì)象,設(shè)置名稱及WSDL */ public Node(String name, String wsdl) { this .name = name。 this .wsdl = wsdl。 } /** * 返回包含節(jié)點(diǎn)名稱、WSDL以及驗(yàn)證結(jié)果的字符串 */ @Override public String toString() { String toString = Node: + name + WSDL: + wsdl + Result: + result。 return toString。 } // Getter amp。 Setter public String getName() { return name。 } public void setName(String name) { this .name = name。 } public String getWsdl() { return wsdl。 } public void setWsdl(String wsdl) { this .wsdl = wsdl。 } public String getResult() { return result。 } public void setResult(String result) { this .result = result。 } public String[] getDependencies() { return dependencies。 } public void setDependencies(String[] dependencies) { this .dependencies = dependencies。 } public Lock getLock() { return lock。 }}package service。import 。import 。/*** 節(jié)點(diǎn)類** @author DigitalSonic*/public class Node {private String name。private String wsdl。private String result = PASS。private String[] dependencies = new String[] {}。private Lock lock = new ReentrantLock()。/** * 默認(rèn)構(gòu)造方法 */public Node() {}/** * 構(gòu)造節(jié)點(diǎn)對(duì)象,設(shè)置名稱及WSDL */public Node(String name, String wsdl) { = name。 = wsdl。}/** * 返回包含節(jié)點(diǎn)名稱、WSDL以及驗(yàn)證結(jié)果的字符串 */@Overridepublic String toString() {String toString = Node: + name + WSDL: + wsdl + Result: + result。return toString。}// Getter amp。 Setterpublic String getName() {return name。}public void setName(String name) { = name。}public String getWsdl() {return wsdl。}public void setWsdl(String wsdl) { = wsdl。}public String getResult() {return result。}public void setResult(String result) { = result。}public String[] getDependencies() {return dependencies。}public void setDependencies(String[] dependencies) { = dependencies。}public Lock getLock() {return lock。}}Java代碼package service。import 。import 。import 。import 。/*** 執(zhí)行驗(yàn)證的任務(wù)類** @author DigitalSonic*/public class ValidationTask implements CallableNode { private static Logger logger = ( ValidationTask )。 private String wsdl。 /** * 構(gòu)造方法,傳入節(jié)點(diǎn)的WSDL */ public ValidationTask(String wsdl) { this .wsdl = wsdl。 } /** * 執(zhí)行針對(duì)某個(gè)節(jié)點(diǎn)的驗(yàn)證br/ * 如果正有別的線程在執(zhí)行同一節(jié)點(diǎn)的驗(yàn)證則等待其結(jié)果,不重復(fù)執(zhí)行驗(yàn)證 */ @Override public Node call() throws Exception { Node node = (wsdl)。 Lock lock = null 。 (開始驗(yàn)證節(jié)點(diǎn): + wsdl)。 if (node != null ) { lock = ()。 if (()) { // 當(dāng)前沒有其他線程驗(yàn)證該節(jié)點(diǎn) (當(dāng)前沒有其他線程驗(yàn)證節(jié)點(diǎn) + () + [ + wsdl + ] )。 try { Node result = (wsdl)。 mergeNode(result, node)。 } finally { ()。 } } else { // 當(dāng)前有別的線程正在驗(yàn)證該節(jié)點(diǎn),等待結(jié)果 (當(dāng)前有別的線程正在驗(yàn)證節(jié)點(diǎn) + () + [ +
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1