线程通信

xiaoxiao2021-02-28  126

线程通信—–消费者与生产者的问题  import  Java .util.LinkedList;  public class ProductCustomerDemo {  public static void main(String[] args) {  Basket bas=new Basket();  ProductThread pt=new ProductThread(bas);  CustomerThread ct=new CustomerThread(bas);  pt.start();  ct.start();  class ProductThread extends Thread{  private Basket basket=null;  public ProductThread(Basket basket){  this.basket=basket;  @Override  public void run() {  basket.pushApple();  class CustomerThread extends Thread{  private Basket basket=null;  public CustomerThread(Basket basket){  this.basket=basket;  @Override  public void run() {  basket.popApple();  class Basket{  private LinkedList list=new LinkedList();  public synchronized void pushApple(){  for(int i=0;i<20;i++){  Apple apple=new Apple(i);  push(apple);  public synchronized void popApple(){  for(int i=0;i<20;i++){  Apple apple=new Apple(i);  pop(apple);  public void push(Apple apple){  if(list.size()==5){  try {  wait(1000);  } catch (InterruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace();  list.addFirst(apple);  System.out.println(“已经添加”+apple.toString());  notify();  public void pop(Apple apple){  if(list.size()==0){  try {  wait(1000);  } catch (InterruptedException e) {  // TODO Auto-generated catch block  e.printStackTrace();  list.removeFirst();  System.out.println(“已经消费”+apple.toString());  notify();  class Apple{  private int id;  public int getId() {  return id;  public void setId(int id) {  this.id = id;  public Apple(){}  public Apple(int id) {  super();  this.id = id;  @Override  public String toString() {  return “苹果”+(id+1);  }
转载请注明原文地址: https://www.6miu.com/read-54797.html

最新回复(0)