博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程--生产者消费者--简单例子
阅读量:6614 次
发布时间:2019-06-24

本文共 1679 字,大约阅读时间需要 5 分钟。

package com.lm.multest;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class Resource {	private int num;	private String name;	private boolean flag = false;	Lock lock = new ReentrantLock();	Condition notFull = lock.newCondition();	Condition notEmpty = lock.newCondition();	public void set(String n) {		lock.lock();		try {			while (flag)				notFull.await();			this.name = n + num++;			System.out.println(Thread.currentThread().getName() + "..生产..."					+ name);			flag = true;			notEmpty.signalAll();		} catch (InterruptedException e) {			e.printStackTrace();		} finally {			lock.unlock();		}	}	public void out() {		lock.lock();		try {			while (!flag)				notEmpty.await();			System.out.println(Thread.currentThread().getName() + "..消费.."					+ name);			flag = false;			notFull.signalAll();		} catch (InterruptedException e) {			e.printStackTrace();		} finally {			lock.unlock();		}	}}class Producer implements Runnable {	private Resource res;	Producer(Resource res) {		this.res = res;	}	@Override	public void run() {		while (true)			res.set("商品");	}}class Consumer implements Runnable {	private Resource res;	Consumer(Resource res) {		this.res = res;	}	public void run() {		while (true)			res.out();	}}public class ProducerConsumerDemo {	public static void main(String[] args) {		Resource r = new Resource();		Producer p = new Producer(r);		Consumer c = new Consumer(r);		Thread th1 = new Thread(p);		Thread th2 = new Thread(c);		Thread th3 = new Thread(p);		Thread th4 = new Thread(c);		th1.start();		th2.start();		th3.start();		th4.start();	}}

  

转载于:https://www.cnblogs.com/limpoo/p/3313458.html

你可能感兴趣的文章