package com.nowcode.www.demo; import java.util.concurrent.BlockingQueue; public class Producer implements Runnable{     BlockingQueue<String> queue ;     /**      * @param queue      */     public Producer(BlockingQueue<String> queue) {         super();         this.queue = queue;     }     @Override     public void run() {         try {             System.out.println("i hava made a product" + Thread.currentThread().getName());             String temp = "consumer " + Thread.currentThread().getName();             queue.put(temp);//如果队列满了就会阻塞         } catch (Exception e) {             e.printStackTrace();         }     }      } package com.nowcode.www.demo; import java.util.concurrent.BlockingQueue; public class Consumer implements Runnable{     BlockingQueue<String> queue;          /**      * @param queue      */     public Consumer(BlockingQueue<String> queue) {         super();         this.queue = queue;     }     @Override     public void run() {         try {             String temp = queue.take();//如果为空会阻塞             System.out.println(temp);         } catch (Exception e) {             e.printStackTrace();         }      } } package com.nowcode.www.demo; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; public class Main {     public static void main(String[] args) {         BlockingQueue<String> queue = new LinkedBlockingQueue<String>(2); //设置2 ,不设置的话默认值为MAX_VALUE         Producer p = new Producer(queue);         Consumer c = new Consumer(queue);         for (int i = 0; i < 10; i++) {             new Thread(p,"produce" + i).start();             new Thread(c, "consumer" + i).start();         }     } }
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务