이 기사의 내용은 Java의 소비자 문제에 대한 코드 분석입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
public class Resource { //当前资源的数量 int num = 0; //当前资源的上限 int size = 10; //消费资源 public synchronized void remove() { //如果num为0,没有资源了,需要等待 while (num == 0) { try { System.out.println("消费者进入等待"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } //如果线程可以执行到这里,说明资源里有资源可以消费 num--; System.out.println("消费者线程为:" + Thread.currentThread().getName() + "--资源数量:" + num); this.notifyAll(); } //生产资源 public synchronized void put() { //如果资源满了,就进入阻塞状态 while (num == size) { try { System.out.println("生产者进入等待"); this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } num++; System.out.println("生产者线程为:" + Thread.currentThread().getName() + "--资源数量:" + num); this.notifyAll(); } }
public class Consumer implements Runnable { private Resource resource; public Consumer(Resource resource) { this.resource = resource; } @Override public void run() { while (true){ resource.remove(); } } }
public class Producer implements Runnable { private Resource resource; public Producer(Resource resource){ this.resource=resource; } @Override public void run() { while (true){ resource.put(); } } }
public class TestConsumerAndProducer { public static void main(String[] args) { Resource resource = new Resource(); //生产线程 Producer p1 = new Producer(resource); //消费线程 Consumer c1 = new Consumer(resource); new Thread(p1).start(); new Thread(c1).start(); } }
Java 생산자와 소비자의 자세한 예# 🎜🎜##🎜 🎜#java 다중 스레드 동시 협업 생산자-소비자 디자인 패턴
위 내용은 Java의 소비자 문제에 대한 코드 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!