併發程式設計之Master Worker模式

2021-08-26 02:47:49 字數 1334 閱讀 7185

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模組的功能眾多 支援子程序 ...