返回顶部

收藏

java的ArrayBlockingQueue使用

更多
import java.util.Date;
import java.util.concurrent.ArrayBlockingQueue;
public class ArrayBlockingQueueTest {
    private static ArrayBlockingQueue<Job> queue;

  public static void main(String[] args) {
      boolean isFIFO=true;
      int capacity=2;
      queue=new ArrayBlockingQueue<Job>(capacity,isFIFO);

      Provider provider=new Provider();
      provider.start();

      Consumer consumer=new Consumer();
      consumer.start();
  }

  public static class Job {
      public String id;
      public boolean isLast=false;
      public Job(String id) {
          this.id=id;
      }
  }

  public static class Provider extends Thread {

      @Override
      public void run() {
          try {
          for(int i=0; i<10; i++) {
              Job job=new Job(i+"");
              System.out.println("send job "+job.id+" at: "+new Date());              
              queue.put(job);
          }
          Job lastJob=new Job("Last Job");
          lastJob.isLast=true;
          queue.put(lastJob);
          } catch (InterruptedException e) {
              System.out.println("Provider thread "+this.getId()+" interrupted");
              return;
          }
      }
  }

  public static class Consumer extends Thread {
      @Override
      public void run() {
          while(true) {
              Job job;
              try {
                  Thread.sleep(1000);
                  job=queue.take();
                  System.out.println("Got the job: "+job.id);
                  if (job.isLast) {
                      return;
                  }
              } catch (InterruptedException e) {
                  System.out.println("Consumer thread "+this.getId()+" interrupted");
                  return;
              }
          }
      }
  }

}

标签:java,多线程

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. 童燕群 发表 2014-04-11 11:45:32 写Java也得了解CPU缓存
  2. 赵 伊凡 发表 2017-07-26 09:46:38 Java多线程(3)——线程间通信
  3. 博主 发表 2011-11-15 05:00:00 Java多线程网页下载代码
  4. 蘑菇街-小宝 发表 2014-03-01 01:00:38 Oracle官方并发教程之同步方法
  5. Eric 发表 2014-07-31 14:03:59 JAVA多线程面试题(一)
  6. hollischuang 发表 2018-01-13 06:39:39 深入理解多线程(三)—— Java的对象头
  7. 博主 发表 2010-03-11 19:39:46 Java多线程的监控分析工具(VisualVM)
  8. tommy 发表 2015-11-05 02:17:08 Java学习笔记—多线程同步的五种方法
  9. 博主 发表 2015-08-22 09:22:55 理解Java内存模型
  10. 陈皓 发表 2013-05-10 00:12:12 疫苗:Java HashMap的死循环
  11. onetwogoo 发表 2013-05-30 13:31:20 无锁HashMap的原理与实现
  12. Eric 发表 2016-09-16 15:31:55 Java工程师应该读的几本书

发表评论