生產者消費者模式之工作竊取演算法

2021-07-27 00:20:22 字數 1265 閱讀 5711

生產者消費者模式之工作竊取演算法

1、乙個通道只有乙個佇列,多個消費者共享乙個佇列例項,導致鎖的競爭,如果乙個通道擁有對個佇列,則消費者可以從通道中獲取各自佇列獲取資料。

2、如要服務有高效能和可靠性的要求,consumer-producer模式請使用 kafka等開源工具

public

inte***ce

workstealingenablechannel

extends

chanel

public

class

workstealingchannel

implements

workstealingenablechannel

@override

public p take() throws interruptedexception

@override

public

void put(p product) throws interruptedexception

@override

public p take(blockingdequepreferredqueue) throws interruptedexception

int queueindex = -1;

while(null != product)

}if(null == product)

return product;

}}public

class

workstealingexample

public workstealingexample()

for(int i=0; inew producer().start();

}for(int i=0; iprivate

class

producer

extends

abstractterminatablethread

}private

class

consumer

extends

abstractterminatablethread

@override

protected

void dorun() throws exception

system.out.println("processing product:" + product);

try catch (exception e) finally}}

}

生產者消費者 生產者與消費者模式

一 什麼是生產者與消費者模式 其實生產者與消費者模式就是乙個多執行緒併發協作的模式,在這個模式中呢,一部分執行緒被用於去生產資料,另一部分執行緒去處理資料,於是便有了形象的生產者與消費者了。而為了更好的優化生產者與消費者的關係,便設立乙個緩衝區,也就相當於乙個資料倉儲,當生產者生產資料時鎖住倉庫,不...

生產者 消費者模式

一 我哥們把資料存入redis快取區 生產者 二 我從緩衝器取資料,並作處理!消費者 詳細 如下 取訂單並判斷 redis new redis conn flag redis connect redis translate usefull host,redis translate usefull p...

生產者消費者模式

常見場景 某個模組負責產生資料,這些資料由另乙個模組來負責處理。產生資料的模組,就形象地稱為生產者 而處理資料的模組,就稱為消費者。該模式還需要有乙個緩衝區處於生產者和消費者之間,作為乙個中介。生產者把資料放入緩衝區,而消費者從緩衝區取出資料 緩衝區作用 1.解耦,生產者和消費者只依賴緩衝區,而不互...