java

位置:IT落伍者 >> java >> 浏览文章

Java多线程--生产者与消费者


发布日期:2021年06月22日
 
Java多线程--生产者与消费者

模拟生产者与消费者实例生产者生产一个产品消费者就消费一个产品 然后生产者再生产消费者再消费

***********************核心方法类****************

package ;

class Queue

// key

{

int value;

boolean bFull = false;

public synchronized void put(int i) {

if (!bFull) {

value = i;

bFull = true;

notify();// 必须用在synchronized

}

try {

wait();// 必须捕获异常

} catch (InterruptedException e) {

// TODO Autogenerated catch block

eprintStackTrace();

}

}

public synchronized int get() {

if (!bFull)

try {

wait();//进入

} catch (InterruptedException e) {

// TODO Autogenerated catch block

eprintStackTrace();

}

bFull = false;

notify();

return value;

}

}

*****************************************************************

************************生产者类********************************

package ;

class Producter extends Thread

{

Queue q;

Producter (Queue q)

{

thisq=q;

}

public void run()

{

Systemoutprintln(********producter****start*****);

for(int i=;i<;i++)

{

Systemoutprintln(producter :+i);

qput(i);

}

Systemoutprintln(********producter*****end****);

}

}

**********************************************************************

****************************消费者类*********************************

package ;

class Consumer extends Thread

{

Queue q;

Consumer(Queue q)

{

thisq=q;

}

public void run()

{

Systemoutprintln(********Consumer****start*****);

while(true)

{

Systemoutprintln(Consumer:+qget());

Systemoutprintln(********Consumer****end*****);

}

}

}

************************************************************************

*******************************主函数调用类**********************************

package ;

public class Test {

public static void main(String[] args) {

Queue q=new Queue();

Producter p=new Producter(q);

Consumer c=new Consumer(q);

pstart();

cstart();

}}

*****************************************************************

OK实现完毕

wait方法——把线程放入wait set

notify方法——从wait set拿出线程

notifyAll方法——从wait set拿出所有线程

waitnotifynotifyAll是Object类的方法

               

上一篇:高级应用 java多线程设计模式详解之一

下一篇:java关于多线程的部分操作