生產者消費者的3種實現方式

2021-08-21 08:36:07 字數 1760 閱讀 8026

/**

* 一、使用synchronized、wait、notify實現生產者,消費者模式

*/public

class

producerconsumerwaitnofityall

}class producer1 implements runnable

public

void

run() catch (interruptedexception e)

}int i = new random().nextint();

system.out.println("producer:"+i);

queue.add(i);

queue.notifyall();}}

}}class consumer1 implements runnable

public

void

run() catch (interruptedexception e)

}int i = queue.poll();

system.out.println("consumer:"+i);

queue.notifyall();}}

}}/**

* 二、使用lock、condition、await、signal實現生產者,消費者模式

*/public

class

producerconsumerawaitsignalall

}class producer2 implements runnable

public

void

run()

int i = new random().nextint();

system.out.println("producer:"+i);

queue.add(i);

conscondition.signalall();

} catch (interruptedexception e) finally}}

}class consumer2 implements runnable

public

void

run()

int i = queue.poll();

system.out.println("consumer:"+i);

prodcondition.signalall();

} catch (exception e) finally}}

}/**

* 三、使用blockingqueue實現生產者,消費者模式。

* 經典的方法是使用wait和notify方法在生產者和消費者,blockingqueue隱含的提供了這些控制,是執行緒安全的。

* 可以安全地與多個生產者和多個使用者一起使用

*/public

class

producerconsumerblockingqueue

}/**

* 生產者

*/class producer implements runnable

public

void

run() catch (interruptedexception e) }}

}/**

* 消費者

*/class consumer implements runnable

public

void

run() catch (interruptedexception e) }}

}

併發程式設計 生產者消費者3種方式

author i create 2019 12 29 14 57 description 生產者消費者 1 版本 class mysharedata count system.out.println thread.currentthread getname 生產了乙個 count this.noti...

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

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

生產者消費者

using system using system.collections.generic using system.threading namespace gmservice foreach thread thread in producers q.exit console.read public...