/**
* 一、使用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...