返回顶部

收藏

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. 麦塔希恩 发表 2015-09-27 15:00:00 Java游戏服务器-多线程异步任务派发
  2. 博主 发表 2016-03-20 11:08:21 Java 多线程-可见性问题
  3. 赵 伊凡 发表 2017-08-03 11:00:35 Java多线程(4)——Lock
  4. hollischuang 发表 2017-11-09 12:59:20 [译]Java虚拟机是如何执行线程同步的
  5. noblog 发表 2015-01-21 04:21:46 Java线程的5个使用技巧
  6. 赵 伊凡 发表 2017-07-17 03:10:20 Java多线程(2)——并发访问控制
  7. root 发表 2015-03-09 03:06:01 java多线程学习总结
  8. root 发表 2015-04-24 10:48:01 Java 多线程 自定义线程辅助
  9. crossoverJie 发表 2018-06-24 14:30:52 我的阿里面试之路
  10. kangzj 发表 2012-09-26 02:08:11 JAVA volatile关键字特性备忘
  11. 郑 旭东 发表 2014-01-16 16:46:51 JAVA多线程和并发基础面试问答
  12. Leafiwan 发表 2014-04-03 14:10:19 synchronized, volatile与线程同步

发表评论