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

正文內(nèi)容

[計(jì)算機(jī)]實(shí)戰(zhàn)javaconcurrent-資料下載頁

2025-08-23 16:03本頁面
  

【正文】 。 = (MockNodeValidator)。 /* * 構(gòu)造模擬數(shù)據(jù) */ static { Node node0 = new Node(NODE0, ://node0/check?wsdl)。 //入口0 Node node1 = new Node(NODE1, ://node1/check?wsdl)。 Node node2 = new Node(NODE2, ://node2/check?wsdl)。 Node node3 = new Node(NODE3, ://node3/check?wsdl)。 Node node4 = new Node(NODE4, ://node4/check?wsdl)。 Node node5 = new Node(NODE5, ://node5/check?wsdl)。 Node node6 = new Node(NODE6, ://node6/check?wsdl)。 //入口1 Node node7 = new Node(NODE7, ://node7/check?wsdl)。 Node node8 = new Node(NODE8, ://node8/check?wsdl)。 Node node9 = new Node(NODE9, ://node9/check?wsdl)。 (new String[] { (), () })。 (new String[] { (), () })。 (new String[] { () })。 (new String[] { (), () })。 (new String[] { (), () })。 (new String[] { (), () })。 (FAILED)。 ((), node0)。 ((), node1)。 ((), node2)。 ((), node3)。 ((), node4)。 ((), node5)。 ((), node6)。 ((), node7)。 ((), node8)。 ((), node9)。 (node0)。 (node6)。 } /** * 模擬執(zhí)行遠(yuǎn)程驗(yàn)證返回節(jié)點(diǎn),每次調(diào)用等待500ms */ public static Node validateNode(String wsdl) { Node node = cloneNode((wsdl))。 (驗(yàn)證節(jié)點(diǎn) + () + [ + () + ])。 ()。 try { (500)。 } catch (InterruptedException e) { ()。 } return node。 }/** * 獲得計(jì)數(shù)器的值 */ public static int getCount() { return ()。 } /** * 克隆一個(gè)新的Node對(duì)象(未執(zhí)行深度克隆) */ public static Node cloneNode(Node originalNode) { Node newNode = new Node()。 (())。 (())。 (())。 (())。 return newNode。 }}上述代碼還有另一個(gè)功能,就是構(gòu)造測試用的節(jié)點(diǎn)數(shù)據(jù),一共10個(gè)節(jié)點(diǎn),有2個(gè)入口點(diǎn),通過這兩個(gè)點(diǎn)能夠遍歷整個(gè)系統(tǒng)。每次調(diào)用會(huì)模擬遠(yuǎn)程訪問,等待500ms。環(huán)境間節(jié)點(diǎn)依賴如下:環(huán)境依賴Node0 [Node1, Node2]Node1 [Node3, Node4]Node2 [Node5]Node6 [Node7, Node8]Node7 [Node5, Node9]Node8 [Node3, Node4]CountDownLatchCountDownLatch是一個(gè)一次性的同步輔助工具,允許一個(gè)或多個(gè)線程一直等待,直到計(jì)數(shù)器值變?yōu)?。它有一個(gè)構(gòu)造方法,設(shè)定計(jì)數(shù)器初始值,即在await()結(jié)束等待前需要調(diào)用多少次countDown()方法。CountDownLatch的計(jì)數(shù)器不能重置,所以說它是“一次性”的,如果需要重置計(jì)數(shù)器,可以使用CyclicBarrier。在運(yùn)行環(huán)境檢查的主類中,使用了CountDownLatch來等待所有驗(yàn)證結(jié)束,在各個(gè)并發(fā)驗(yàn)證的線程完成任務(wù)結(jié)束前都會(huì)調(diào)用countDown(),因?yàn)橛?個(gè)并發(fā)的驗(yàn)證,所以將計(jì)數(shù)器設(shè)置為3。最后將所有這些類整合起來,運(yùn)行環(huán)境檢查的主類如下。它會(huì)創(chuàng)建線程池服務(wù)和驗(yàn)證服務(wù),先做一次驗(yàn)證(相當(dāng)于是對(duì)系統(tǒng)做次初始化),隨后并發(fā)3個(gè)驗(yàn)證請求。系統(tǒng)運(yùn)行完畢會(huì)顯示實(shí)際執(zhí)行的節(jié)點(diǎn)驗(yàn)證次數(shù)和執(zhí)行時(shí)間。如果是順序執(zhí)行,驗(yàn)證次數(shù)應(yīng)該是13*4=52,但實(shí)際的驗(yàn)證次數(shù)會(huì)少于這個(gè)數(shù)字(我這里最近一次執(zhí)行了33次驗(yàn)證),因?yàn)槿绻瑫r(shí)有兩個(gè)線程要驗(yàn)證同一節(jié)點(diǎn)時(shí)只會(huì)做一次驗(yàn)證。關(guān)于時(shí)間,如果是順序執(zhí)行,52次驗(yàn)證每次等待500ms,那么驗(yàn)證所耗費(fèi)的時(shí)間應(yīng)該是26000ms,使用了多線程后的實(shí)際耗時(shí)遠(yuǎn)小于該數(shù)字(最近一次執(zhí)行耗時(shí)4031ms)。Java代碼package 。import 。import 。import 。import 。import 。import 。/*** 模擬執(zhí)行這個(gè)環(huán)境的驗(yàn)證** @author DigitalSonic*/public class ValidationStarter implements Runnable { private ListString entries。 private ValidationService validationService。 private CountDownLatch signal。 public ValidationStarter(ListString entries, ValidationService validationService, CountDownLatch signal) { this .entries = entries。 this .validationService = validationService。 this .signal = signal。 } /** * 線程池大小為10,初始化執(zhí)行一次,隨后并發(fā)三個(gè)驗(yàn)證 */ public static void main(String[] args) { ThreadPoolService threadPoolService = new ThreadPoolService( 10 )。 ValidationService validationService = new ValidationService(threadPoolService)。 ListString entries = new ArrayListString()。 CountDownLatch signal = new CountDownLatch( 3 )。 long start。 long stop。 for (Node node : ) { (())。 } start = ()。 (entries)。 (new ValidationStarter(entries, validationService, signal))。 (new ValidationStarter(entries, validationService, signal))。 (new ValidationStarter(entries, validationService, signal))。 try { ()。 } catch (InterruptedException e) { ()。 } stop = ()。 (1000 )。 (實(shí)際執(zhí)行驗(yàn)證次數(shù): + ())。 (實(shí)際執(zhí)行時(shí)間: + (stop start) + ms )。 } @Override public void run() { (entries)。 ()。 }}package 。import 。import 。import 。import 。import 。import 。/*** 模擬執(zhí)行這個(gè)環(huán)境的驗(yàn)證** @author DigitalSonic*/public class ValidationStarter implements Runnable { private ListString entries。 private ValidationService validationService。 private CountDownLatch signal。 public ValidationStarter(ListString entries, ValidationService validationService, CountDownLatch signal) { = entries。 = validationService。 = signal。 } /** * 線程池大小為10,初始化執(zhí)行一次,隨后并發(fā)三個(gè)驗(yàn)證 */ public static void main(String[] args) { ThreadPoolService threadPoolService = new ThreadPoolService(10)。 ValidationService validationService = new ValidationService(threadPoolService)。 ListString entries = new ArrayListString()。 CountDownLatch signal = new CountDownLatch(3)。 long start。 long stop。 for (Node node : ) { (())。 } start = ()。 (entries)。 (new ValidationStarter(entries, validationService, signal))。 (new ValidationStarter(entries, validationService, signal))。 (new ValidationStarter(entries, validationService, signal))。 try { ()。 } catch (InterruptedException e) { ()。 } stop = ()。 (1000)。 (實(shí)際執(zhí)行驗(yàn)證次數(shù): + ())。 (實(shí)際執(zhí)行時(shí)間: + (stop start) + ms)。 } @Override public void run() { (entries)。 ()。 }}=================================我是分割線==============================,只是挑選一些比較常用的東西,想要獲得更多詳細(xì)信息請閱讀JavaDoc。自打有了“輪子”理論,重復(fù)造大輪子的情況的確少了,但還是有人會(huì)做些小輪子,例如編寫多線程程序時(shí)用到的小工具(線程池、鎖等等),如果可以,請讓自己再 “懶惰”一點(diǎn)吧~
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1