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

正文內(nèi)容

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

2024-09-05 16:03本頁(yè)面
  

【正文】 hrows InterruptedException { } } ()。 if (++putptr == ) putptr = 0。 items[putptr] = x。 while (count == ) try { int putptr, takeptr, count。 final Condition notEmpty = ()。 = ()。 final Lock lock = new ReentrantLock()。class BoundedBuffer {} } } } finally return count。 (++takeptr == ) takeptr = ()。 (count == try throws public ()。 { ()。 0 。 if items[putptr] = x。 (count == ) try throws void public putptr, takeptr, count。 Object[ 100 ]。 Object[] items = Condition notEmpty = ()。 Condition notFull ReentrantLock()。 Lock lock =classJDK的JavaDoc中有一個(gè)例子能夠很好地說(shuō)明Condition的用途及用法:Java代碼講到Lock,就不能不講Conditon,前者代替了synchronized,而后者則代替了Object對(duì)象上的wait()、 notify()和notifyAll()方法(Condition中提供了await()、signal()和signalAll()方法),當(dāng)滿足運(yùn)行條件前掛起線程。請(qǐng)注意ValidationTask的call()方法,這里會(huì)先檢查節(jié)點(diǎn)是否被鎖定,如果被鎖定則表示當(dāng)前有另一個(gè)線程正在驗(yàn)證該節(jié)點(diǎn),那就不用重復(fù)進(jìn)行驗(yàn)證。 }} return dest。 (())。 (())。 (())。 (())。 */ * 將src的內(nèi)容合并進(jìn)dest節(jié)點(diǎn)中,不進(jìn)行深度拷貝 /** } (wsdl, node)。 node = (wsdl)。 (首次驗(yàn)證節(jié)點(diǎn): + wsdl)。 // 從未進(jìn)行過(guò)驗(yàn)證,這種情況應(yīng)該只出現(xiàn)在系統(tǒng)啟動(dòng)初期 } ()。 ()。 (當(dāng)前有別的線程正在驗(yàn)證節(jié)點(diǎn) + () + [ + wsdl + ],等待結(jié)果)。 } else { } finally { mergeNode(result, node)。 Node result = (wsdl)。 // 當(dāng)前沒(méi)有其他線程驗(yàn)證該節(jié)點(diǎn) if (node != null) { (開(kāi)始驗(yàn)證節(jié)點(diǎn): + wsdl)。 Lock lock = null。 Node node = (wsdl)。 Override } = wsdl。 */ * 構(gòu)造方法,傳入節(jié)點(diǎn)的WSDL /** wsdl。*/public class ValidationTask implements CallableNode {* 執(zhí)行驗(yàn)證的任務(wù)類import 。import 。package service。 } return (())。 (())。 Node mergeNode(Node src, Node dest) { */ /** node。 + ())。 + wsdl + + () + (wsdl, node)。 + wsdl)。 // 這時(shí)是在做初始化,不應(yīng)該有沖突發(fā)生 } else } ()。 + wsdl + + () + // 當(dāng)前有別的線程正在驗(yàn)證該節(jié)點(diǎn),等待結(jié)果 { ()。 { mergeNode(result, node)。 try + wsdl + + () + // 當(dāng)前沒(méi)有其他線程驗(yàn)證該節(jié)點(diǎn) (()) { lock = ()。 null ) { if (開(kāi)始驗(yàn)證節(jié)點(diǎn): Node node = (wsdl)。 Exception { Node call() Override * 如果正有別的線程在執(zhí)行同一節(jié)點(diǎn)的驗(yàn)證則等待其結(jié)果,不重復(fù)執(zhí)行驗(yàn)證 /** this .wsdl = wsdl。 ValidationTask(String wsdl) { */ /** wsdl。 private Logger logger = ( ValidationTask )。 implements classpublic*/* author DigitalSonic 。 。import 。 service。} = dependencies。public void setDependencies(String[] dependencies) {} = result。public void setResult(String result) {} = wsdl。public void setWsdl(String wsdl) {} = name。public void setName(String name) { SetterString toString = Node: + name + WSDL: + wsdl + Result: + result。public String toString() { *//** = name。public Node(String name, String wsdl) { * 構(gòu)造節(jié)點(diǎn)對(duì)象,設(shè)置名稱及WSDLpublic Node() { * 默認(rèn)構(gòu)造方法*/public class Node {* 節(jié)點(diǎn)類import 。package service。 lock。 public this .dependencies = dependencies。 setDependencies(String[] dependencies) { } return String[] getDependencies() { } void public result。 public this .wsdl = wsdl。 setWsdl(String wsdl) { } return String getWsdl() { } void public name。 public // Getter amp。 toString。 + result。 + wsdl + + name + public */ /** this .wsdl = wsdl。 public * 構(gòu)造節(jié)點(diǎn)對(duì)象,設(shè)置名稱及WSDL } Node() { */ /** new private new private String result = String wsdl。 String name。 classpublic*/* author DigitalSonic 。importpackage以下范例中使用了ReentrantLock進(jìn)行節(jié)點(diǎn)鎖定:Java代碼()。try {} ()。 {try()。通過(guò)Lock能夠?qū)崿F(xiàn)更靈活的鎖定機(jī)制,它還提供了很多synchronized所沒(méi)有的功能,例如嘗試獲得鎖(tryLock())。也可以用shutdownNow()來(lái)關(guān)閉線程池,它會(huì)立刻關(guān)閉線程池,沒(méi)有執(zhí)行的任務(wù)作為返回值返回。網(wǎng)上也有人遇到類似的問(wèn)題(invokeAll() is not willing to acept a CollectionCallableT )。明明ValidationTask實(shí)現(xiàn)了 CallableNode,可是它死活不認(rèn),類型不匹配,這時(shí)可以將參數(shù)聲明由ListValidationTask改為 ListCallableNode。還有一個(gè)比較詭異的地方這里要額外說(shuō)明一下invokeAll()和invokeAny()方法。 }} createExecutorService()。 = poolSize。 */ * see createExecutorService() * 調(diào)整線程池大小 /** public void createExecutorService() { } } ()。 try {amp。 public void destoryExecutorService(long timeout) { * * 關(guān)閉當(dāng)前ExecutorService }/** return nodes。 } catch (InterruptedException e) { } ()。 try { } futures = (tasks, timeout, )。 if (timeout 0) { ListFutureNode futures = null。 public ListNode invokeAll(ListValidationTask tasks, long timeout) { * * 在線程池中執(zhí)行所有給定的任務(wù)并取回運(yùn)行結(jié)果 /** public ListNode invokeAll(ListValidationTask tasks) { * * 在線程池中執(zhí)行所有給定的任務(wù)并取回運(yùn)行結(jié)果,使用默認(rèn)超時(shí)時(shí)間 /** public void execute(Runnable task) { } setPoolSize(poolSize)。 */ * 根據(jù)給定大小創(chuàng)建線程池 /** executorService。 private int public static final long DEFAULT_TASK_TIMEOUT = 1000。 DEFAULT_POOL_SIZE */ * 默認(rèn)線程池大小 /*** author DigitalSonic*/**import 。import 。import 。package service。 } thi
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1