master-worker模式是常用的併發模式,核心是master和worker兩個程序,master接收和分配任務,各個worker執行任務並返回結果,由master來歸納和總結。好處是能將大任務分解為若干個小任務,提高系統的吞吐量。
**示例:
public
class master
}// 5.接收任務
public
void
submit(task task)
// 6.執行任務
public
void
execute()
}// 7.判斷所有任務是否執行完成
public boolean iscompleted()
}return
true;
}// 8.返回結果
public
long
getresult()
return result;}}
public
class
worker
implements
runnable
public
void
setresultset(concurrenthashmapresultset)
@override
public
void
run()
}public
void
handle(task task) catch (interruptedexception e)
resultset.put(string.valueof(task.getid()), result);}}
public
class test
long start = system.currenttimemillis();
// 執行任務
master.execute();
while(true) }}
}
1、master擁有乙個任務佇列,乙個worker組和乙個結果集
2、每個worker能操作任務佇列和結果集,因為需要從任務佇列中取任務,以及結果存放到結果集中
master-worker模式是一種將序列任務並行化的方案,被分解的子任務在系統中可以被並行處理,同時,如果有需要,master程序不需要等待所有子任務都完成計算,就可以根據已有的部分結果集計算最終結果集。
併發程式設計之併發佇列
jdk 中提供了一系列場景的併發安全佇列。總的來說,按照實現方式的不同可分為阻塞佇列和非阻塞佇列,前者使用鎖實現,而後者則使用cas 非阻塞演算法實現。1 非阻塞佇列 concurrentlinkedqueue concurrentlinkedqueue是無界非阻塞佇列,內部使用單項鍊表實現 其中有...
併發程式設計之AtomicReference
此類屬於原子並發包,可以對引用型別進行原子無鎖操作 構造方法 保證可見性和禁止指令重排序 private volatile v value 用給定的物件創造乙個引用原子型別 param initialvalue the initial value public atomicreference v i...
併發程式設計之程序
在python中大部分情況需要使用多程序。python提供了multiprocessing。multiprocessing模組用來開啟子程序,並在子程序中執行我們定製的任務 比如函式 該模組與多執行緒模組threading的程式設計介面類似。multiprocessing模組的功能眾多 支援子程序 ...