Der Inhalt dieses Artikels befasst sich mit der Codeanalyse von Verbraucherproblemen in Java. Freunde in Not können darauf verweisen.
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(); } } }
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonCodeanalyse für Verbraucherprobleme in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!