本案例測試master-worker併發設計模式,網上關於該模式,都大差不差,本案例使用執行緒池的方式,重新實現,並進行測試對比。筆者希望進行優化,並作為工具使用,技術水平有限,請多多指教,提出不同意見,共同進步。建議clone**,學習
git倉庫位址
測試threadmap result:216474736
測試executorservice result:216474736
stopwatch '': running time (millis) = 652
-----------------------------------------
ms % task name
-----------------------------------------
00432 066% 測試threadmap
00220 034% 測試executorservice
smileworkerhandler
實現smileworkerhandler
類,為每個任務寫處理方法
public inte***ce smileworkerhandler
}
smilemaster
該類任務主要用於任務分配,提供多種構造,執行自定義執行緒池和執行緒工廠
/**
* @param worker worker程序邏輯
* @param countworker worker程序數量
*/public smilemaster(smileworker worker, int countworker)
/*** @param worker worker程序邏輯
* @param countworker worker程序數量
* @param threadfactory 自定義執行緒工廠
*/public smilemaster(smileworker worker, int countworker, threadfactory threadfactory)
/*** @param worker worker程序邏輯
* @param executor 執行緒池
* 使用執行緒池來維護工作佇列
*/public smilemaster(smileworker worker, int countworker, executorservice executor)
/**
* @package: flyer.worker.core
* @description: 測試版本
* @author: liuxin
* @date: 2017/9/14 下午5:15
*/public class smilemastertest
public static integer testthreadmap(int countworker,int counttask)
}), countworker);
//提交100個子任務
for (int i = 0; i < counttask; i++)
smilemaster.execute();
mapresultmap = smilemaster.getresultmap();
int re = 0;
for (map.entryentry : resultmap.entryset())
return re;
}public static integer testexecutorservice(int countworker,int counttask)
}), countworker, executorservice2);
for (int i = 0; i < counttask; i++)
smilemaster1.executepool();
int re1 = 0;
string key = entry.getkey();
re1 += o;
}return re1;
}}
iPhone Instruments工具使用
本文摘自 xcode 視窗並顯示出問題的 這是非常棒的功能。在本例中,第一次 nsstring 分配的時候出現了洩露,你需要做一些處理。這是個非常簡單的例子,但找到為什麼會發生洩露則要麻煩些。讓我們仔細看一下例子。在 viewdidload 當中,我們為字串分配到了記憶體,如下所示 mmyleaky...
併發模式(二)Master Worker模式
master worker模式是一種使用多執行緒進行資料處理的結構。多個worker程序協作處理使用者請求,master程序負責維護worker程序,並整合最終處理結果。master worker模式是常用的並行模式之一。系統有兩類程序協作工作 master程序和worker程序。master程序負...
併發程式設計之Master Worker模式
master worker模式是常用的併發模式,核心是master和worker兩個程序,master接收和分配任務,各個worker執行任務並返回結果,由master來歸納和總結。好處是能將大任務分解為若干個小任務,提高系統的吞吐量。示例 public class master 5.接收任務 pu...