同步线程--生产者与消费者模式

简介: 同步线程的一种经典设计模式。 public class Test { public static void main(String[] args) {  Quene q = new Quene()...


同步线程的一种经典设计模式。

public class Test {
 public static void main(String[] args) {
  Quene q = new Quene();
  Producter producter = new Producter(q);
  Customer customer = new Customer(q);

  producter.start();
  customer.start();
 }
}

//生产者
public class Producter extends Thread {
 private Quene quene;
 public Producter(Quene quene) {
  this.quene = quene;
 }

 @Override
 public void run() {
  for (int i = 0; i < 10; i++) {
   quene.setItem(i);
   System.out.println("生产者:生产产品" + i);
  }
 }
}


//消费者
public class Customer extends Thread {
 private Quene quene;

 public Customer(Quene quene) {
  this.quene = quene;
 }

 @Override
 public void run() {
  for (int i = 0; i < 10; i++) {

   System.out.println("消费者:获得产品" + quene.getItem());
  }
 }
}

//销售列队
public class Quene {
 private int item;
 private boolean isFull = false;
 
 public synchronized int getItem() {
  if (!isFull) {
   try {
    wait();
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
  isFull = false;
  this.notify();
  return item;
 }
 
 //因为使用notify()所有要加上 synchronized
 //synchronized 对方法修饰的时候等同与
 // synchronized(this){  ......  }
 public synchronized void setItem(int item) {
  if (!isFull) {
   this.item = item;
   isFull = true;
   this.notify();
  }
  try {
   this.wait();
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
 }
}

目录
相关文章
|
1月前
|
Java 云计算
Java多线程编程中的同步与互斥机制探析
在当今软件开发领域,多线程编程是一项至关重要的技能。本文将深入探讨Java中的同步与互斥机制,分析其在多线程环境下的应用及实现原理,帮助读者更好地理解并运用这一关键技术。
23 4
|
1月前
|
Python
在Python中,如何保证多个线程之间的同步?
在Python中,如何保证多个线程之间的同步?
24 4
|
1月前
|
Python
如何在Python中实现线程之间的同步和通信?
【2月更文挑战第17天】【2月更文挑战第51篇】如何在Python中实现线程之间的同步和通信?
|
1月前
|
算法 调度 索引
什么是多任务和线程?用线程写的一个udp同步聊天器
什么是多任务和线程?用线程写的一个udp同步聊天器
30 0
|
3月前
|
存储 缓存 Java
9.队列:生产消费模式及线程池的运用
9.队列:生产消费模式及线程池的运用
36 0
|
29天前
|
存储 编解码 算法
【ffmpeg音视频同步】解决ffmpeg音视频中多线程之间的数据同步问题
【ffmpeg音视频同步】解决ffmpeg音视频中多线程之间的数据同步问题
38 2
|
1月前
|
安全 C++ 开发者
【C++多线程同步】C++多线程同步和互斥的关键:std::mutex和相关类的全面使用教程与深度解析
【C++多线程同步】C++多线程同步和互斥的关键:std::mutex和相关类的全面使用教程与深度解析
18 0
|
1月前
|
安全 Java 程序员
Java中的并发编程:掌握同步机制与线程安全
【2月更文挑战第12天】 在现代软件开发领域,多线程和并发编程已成为提高应用性能和资源利用率的关键技术。Java语言提供了丰富的并发编程工具和框架,使得开发高效、可靠的并发应用成为可能。本文将深入探讨Java中的并发编程,着重介绍同步机制、线程安全概念及其在实际开发中的应用。通过对这些知识点的深入分析和案例演示,旨在帮助读者建立起对Java并发编程的全面理解,从而更好地设计和实现线程安全的高并发系统。
|
2月前
|
并行计算 Java API
深入理解Java多线程编程:创建、状态管理、同步与通信
深入理解Java多线程编程:创建、状态管理、同步与通信

热门文章

最新文章