Java 多线程生产者和消费者代码示例
来源:互联网 发布:接口 java 编辑:程序博客网 时间:2024/06/05 19:33
共享资源代码:
package com.hycz.producer.consumer;public class Box {private int data;private boolean variable = false; //同步标识符public synchronized void put(int data){while(variable){//当同步标识符为true时,所有生产者线程调用的put()方法时都从运行状态变成阻塞状态,不进行生产。try {wait();} catch (InterruptedException e) {e.printStackTrace();}}variable = true; // 改变标识符this.data = data;notifyAll(); // 唤醒所以处于阻塞状态的消费者线程,提醒它们现在产品可以进行消费。}public synchronized int get(){while(!variable){ // 当同步标识符为false时,所有消费者线程调用get()方法时都从运行状态变成阻塞状态,不进行消费。try {wait();} catch (InterruptedException e) {e.printStackTrace();}}variable = false; // 改变标识符notifyAll(); // 唤醒所以处于阻塞状态的生产者线程,提醒它们进行产口的生产。return this.data;}}
package com.hycz.producer.consumer;public class Producer extends Thread {private Box box;public Producer(Box box) {super();this.box = box;}@Overridepublic void run() {for(int i = 0; i<10; i++){box.put(i);System.out.println("Producer put = " + i);try {Thread.sleep((int)Math.random()*100);} catch (InterruptedException e) {e.printStackTrace();}}}}
package com.hycz.producer.consumer;public class Consumer extends Thread {private Box box;public Consumer(Box box) {this.box = box;}@Overridepublic void run() {int value = 0;for(int i=0; i<10; i++){value = box.get();System.out.println("Consumer get = " + value);}}}
测试代码:
package com.hycz.producer.consumer;public class ProducerConsumerTest {public static void main(String[] args) {Box box = new Box();Thread producer = new Producer(box);Thread consumer = new Consumer(box);producer.start();consumer.start();}}
- Java 多线程生产者和消费者代码示例
- java实现 生产者和消费者问题 多线程同步示例
- 用JAVA中的多线程示例生产者和消费者问题
- Java 多线程 生产者和消费者
- Java多线程-生产者和消费者
- 【java多线程之】生产者消费者示例
- java生产者消费者模式代码示例
- kafka生产者与消费者java代码示例
- java代码实现多线程消费者生产者问题。
- Java生产者消费者示例
- java多线程 消费者-生产者
- java多线程 消费者-生产者
- java 多线程 生产者消费者
- JAVA [ 多线程 -- 生产者消费者 ]
- Java 多线程-生产者、消费者
- java多线程--生产者消费者
- java多线程-生产者消费者
- Java多线程生产者消费者
- ffmpeg android
- 通过一个天气预报案例学习asp.net WebService(基于asp.net MVC)
- Installing Android Studio IDE in Ubuntu | Fedora – Hello World Application
- Jetty使用入门
- 黑马训练营---------IO 字节数组流对象
- Java 多线程生产者和消费者代码示例
- 在做iframe的时候左侧栏目跳转方式
- 编译Android模拟器内核goldfish
- 当ArcGIS10.2遇到SQLite
- 怎样查看SAP Host Agent版本?
- js 中容易犯错的变量声明
- c# MD5加密
- UNIX udp应用增加可靠性(1)
- oracle 存储过程的一些应用-02