这个理念,在大学时就在linux下做过实验,当时纯是应付老师啊,什么不没有记住,只记得打印出各种输出,这几天在项目中看到了一个处理机制,感觉特熟悉,
原来是这个东西啊。把项目搞定了,突然想把老师的例实验再写写,记录下。
在网上搜索了几个帖子,自己改了改。思路还算清晰。
Basket.java
public class Basket { BlockingQueue<String> basket = new ArrayBlockingQueue<String>(5); public void produce() throws InterruptedException{ basket.put("Android is the best"); } public String consume() throws InterruptedException{ return basket.take(); } }
Consumer.javapublic class Consumer implements Runnable{ private Basket basket; public Consumer(Basket basket) { super(); this.basket = basket; } @Override public void run() { try { while (true) { System.out.println("消费者准备消费苹果: " + System.currentTimeMillis()); basket.consume(); System.out.println("消费者消费苹果完毕: " + System.currentTimeMillis()); Thread.sleep(1000); } } catch (InterruptedException e) { } } }
Producer.javapublic class Producer implements Runnable{ private Basket basket; public Producer(Basket basket) { super(); this.basket = basket; } @Override public void run() { try{ while(true){ System.out.println("生产者准备生产苹果: " + System.currentTimeMillis()); basket.produce(); System.out.println("生产者生产苹果完毕: " + System.currentTimeMillis()); Thread.sleep(300); } }catch(InterruptedException ex){ } } }
Test.javapublic class Test { public static void main(String[] args) { Basket basket = new Basket(); ExecutorService service = Executors.newCachedThreadPool(); Producer producer = new Producer(basket); Consumer consumer = new Consumer(basket); service.submit(producer); service.submit(consumer); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } service.shutdownNow(); } }
java 生产者与消费者
最新推荐文章于 2024-09-08 11:09:43 发布