阻塞队列

222 阅读1分钟

常见队列

  • ArrayBlockingQueue--基于数组实现,初始化时需要指定数组大小,也可指定公平性
  • LinkedBlockingQueue--基于链表实现,不指定大小,默认Integer.MAX_VALUE
  • ProirityBlockingQueue--按照优先级,无界队列,因此生产者永远不会阻塞
  • delayQueue--延时队列

主要方法

  • put()--向队尾存入数据,如果满则等待
  • take()--从队首取数据,如果空则等待
  • offer(E e, long time, TimeUnit unit)--向队尾存入数据,如果满则等待,如果指定时间过后,插入成功返回true,否则false
  • poll(long time, TimeUnit unit)--从队首取数据,如果空则等待,如果指定时间过后,取出则返回,否则返回null

生产者消费者示例