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

正文內(nèi)容

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