请问阻塞队列的插入与删除方法如何实现?

解决方案 »

  1.   

    你说的是同步队列BlockingQueue吧
    它的插入有3中方式
    1:add()这个插入成功返回true,不成功抛异常
    2:offer()这个插入成功返回true,不成功返回false
    3:put()这个是阻塞的,如果没有可用空间,将一直等待到有可用空间
    删除也是3中
    1:take()阻塞的,在元素可用前一直等待
    2:poll()如果没有可用元素则返回Null,否则返回该元素
    3:remove()返回对头元素,如果不可用抛异常
      

  2.   

    put()这个是阻塞的,如果没有可用空间,将一直等待到有可用空间 
    take()阻塞的,在元素可用前一直等待
      

  3.   

    put与take这两个方法怎么实现啊
      

  4.   

    这两个方法是很好的,我就很经常用,比如你在线程一里构造一个对象,add一个LinkedBlockingQueue里
    线程2是对这个对象加工,线程2就是在这个LinkedBlockingQueue里take,如果线程一没有来得及构造的话,就阻塞,很想生产者和消费者的例子吧,就是不用使用wait()notifty()了
      

  5.   

    put与take这两个方法里面怎么去实现啊,用wait()notifty()?
    BlockingQueue在ecilpse只是一个接口啊
      

  6.   

    晕,BlockingQueue是接口,但你可以用它的实现类吗
    ArrayBlockingQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, PriorityBlockingQueue, SynchronousQueue
    我说的是生产者和消费者的例子如果用BlockingQueue就不用wait()Notifty()了