返回顶部

收藏

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. hollischuang 发表 2018-01-13 06:39:39 深入理解多线程(三)—— Java的对象头
  2. root 发表 2015-03-09 03:06:01 java多线程学习总结
  3. root 发表 2015-04-24 10:48:01 Java 多线程 自定义线程辅助
  4. 博主 发表 2011-11-15 00:00:00 Java多线程网页下载代码
  5. 博主 发表 2015-10-07 00:00:00 ThreadPoolExecutor 类
  6. 张振华_jack 发表 2015-09-12 02:13:04 《 Java并发编程从入门到精通》Thread安全与不安全
  7. kangzj 发表 2012-09-26 02:08:11 JAVA volatile关键字特性备忘
  8. 郑 旭东 发表 2014-01-16 16:46:51 JAVA多线程和并发基础面试问答
  9. Leafiwan 发表 2014-04-03 14:10:19 synchronized, volatile与线程同步
  10. 赵 伊凡 发表 2017-07-05 07:41:24 Java多线程(1)——基础
  11. jihite 发表 2018-08-04 03:26:00 Java多线程和并发基础知识总结 - jihite
  12. TiuVe2 发表 2018-01-29 12:27:43 Java 多线程编程 — 锁优化

发表评论