If you want to know a general knowledge of multithreading, you can look at this article first.
Changes in each state of the thread.
Look at wait.
Import java.util.concurrent.arrayblockingqueue;/** * Producer-Consumer * * @author Zzs. * @since 2018/3/24 */public class Blockingqueuetest {private int size = 20; Private arrayblockingqueue<integer> Blockingqueue = new arrayblockingqueue<integer> (size); public static void Main (string[] args) {blockingqueuetest test = new Blockingqueuetest (); Producer Producer = Test.new Producer (); Consumer Consumer = Test.new Consumer (); Producer.start (); Consumer.start (); } class Consumer extends Thread {@Override public void run () {while (true) { try {//Remove an element from a blocking queue blockingqueue.take (); System.out.println ("queue remainder" + blockingqueue.size () + "elements"); } catch (Interruptedexception e) {}}}} class Producer extends Thread {@Override public void Run () {while (true) {try {//) inserts an element into the blocking queue Blockingqueue.put (1); System.out.println ("Queue remaining space:" + (Size-blockingqueue.size ())); } catch (Interruptedexception e) {}}}}}
Java Core Technology point of multi-threading 2