對于Java多線程程序來說,不管任何編程語言,生產(chǎn)者和消費者模型都是經(jīng)典的。就像學(xué)習(xí)每一門編程語言一樣,Hello World!都是經(jīng)典的例子。實際上,準(zhǔn)確說應(yīng)該是“生產(chǎn)者-消費者-倉儲”模型,離開了倉儲,生產(chǎn)者消費者模型就顯得沒有說服力了。對于此模型,應(yīng)該 明確一下幾點:
1、生產(chǎn)者僅僅在倉儲未滿時候生產(chǎn),倉滿則停止生產(chǎn)。
2、消費者僅僅在倉儲有產(chǎn)品時候才能消費,倉空則等待。
3、當(dāng)消費者發(fā)現(xiàn)倉儲沒產(chǎn)品可消費時候會通知生產(chǎn)者生產(chǎn)。
4、生產(chǎn)者在生產(chǎn)出可消費產(chǎn)品時候,應(yīng)該通知等待的消費者去消費。
此模型將要結(jié)合java.lang.Object的wait與notify、notifyAll方法來實現(xiàn)以上的需求。這是非常重要的。
Java多線程程序代碼
1.public class Test {
2.public static void main(String[] args) {
3.Godown godown = new Godown(30);
4.Consumer c1 = new Consumer(50, godown);
5.Consumer c2 = new Consumer(20, godown);
6.Consumer c3 = new Consumer(30, godown);
7.Producer p1 = new Producer(10, godown);
8.Producer p2 = new Producer(10, godown);
9.Producer p3 = new Producer(10, godown);
10.Producer p4 = new Producer(10, godown);
11.Producer p5 = new Producer(10, godown);
12.Producer p6 = new Producer(10, godown);
13.Producer p7 = new Producer(80, godown);
14.c1.start();
15.c2.start();
16.c3.start();
17.p1.start();
18.p2.start();
19.p3.start();
20.p4.start();
21.p5.start();
22.p6.start();
23.p7.start();
24.}
25.}
以上就是對Java多線程程序的相關(guān)代碼介紹。