ProducerConsumer.java 1.44 KB
Newer Older
shj committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;

public class ProducerConsumer {
    public static BlockingQueue<String> blockingQueue=new LinkedBlockingQueue<>(10);
    public static class Producer extends Thread{
        @Override
        public void run() {
            while(!isInterrupted()){
                try {
                    blockingQueue.put("product");
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }finally {
                    System.out.println("produce..");
                }
            }
        }
    }

    public static class Consumer extends Thread{
        @Override
        public void run() {
            while(!isInterrupted()){
                try {
                    blockingQueue.take();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }finally {
                    System.out.println("consume..");
                }
            }
        }
    }

    public static void main(String[] args) {
        Thread produce=new Producer();
        Thread consume=new Consumer();
        produce.start();
        consume.start();
        try {
            Thread.sleep(1);
            produce.interrupt();
            consume.interrupt();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}