广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java线程生产者/消费者是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-05-11分类:Java技术浏览:709


导读:Java线程生产者/消费者是什么?Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,下面就让我们一起来看看惠州北大青

Java线程生产者/消费者是什么?Java是现在非常主流的编程语言之一,很多人想转行学习Java。那么,下面就让我们一起来看看惠州北大青

生产者/消费者是使用wait()和notify()方法的典型线程同步问题。

实例

有四个类:缓冲区,生产者,消费者和生产者CumerumerTest。

Buffer类的一个对象具有一个整数数据元素,它将由生产者生成并由消费者消费。

我们必须同步对缓冲区的访问,因此只有当缓冲区为空时,生产者才产生一个新的数据元素,而消费者只有在可用时才消耗缓冲区的数据。

ProducerConsumerTest类用于测试程序。

import java.util.Random;class Consumer extends Thread {  private Buffer buffer;  public Consumer(Buffer buffer) {
   this.buffer = buffer;
 }  public void run() {    int data;    while (true) {
     data = buffer.consume();
   }
 }
}public class Main {  public static void main(String[] args) {
   Buffer buffer = new Buffer();
   Producer p = new Producer(buffer);
   Consumer c = new Consumer(buffer);

   p.start();
   c.start();
 }
}class Producer extends Thread {  private Buffer buffer;  public Producer(Buffer buffer) {
   this.buffer = buffer;
 }  public void run() {
   Random rand = new Random();    while (true) {      int n = rand.nextInt();
     buffer.produce(n);
   }
 }
}class Buffer {  private int data;  private boolean empty;  public Buffer() {
   this.empty = true;
 }  public synchronized void produce(int newData) {    while (!this.empty) {      try {
       this.wait();
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
   this.data = newData;
   this.empty = false;
   this.notify();
   System.out.println("Produced:" + newData);
 }  public synchronized int consume() {    while (this.empty) {      try {
       this.wait();
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
   this.empty = true;
   this.notify();
   System.out.println("Consumed:" + data);    return data;
 }
}

上面的代码生成以下结果。

Java线程生产者消费者.png

想了解更多关于Java的资讯吗?可以来惠州北大青鸟新方舟校区了解一下。

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表