zl程序教程

您现在的位置是:首页 >  其他

当前栏目

阻塞队列实现等待唤醒机制

2023-04-18 15:49:11 时间

 

 BlockingQueue的核心方法:

  put(anObject):将参数放入队列,如果放不进去会阻塞;

  take():取出第一个数据,如果取不到会阻塞;

常见的BlockingQueue:

  ArrayBlockingQueue:底层是数组,有界;

  LinkedBlockingQueue:底层是链表,无界。但不是真正的无界,最大为int的最大值。

阻塞队列基本用法:

import java.util.concurrent.ArrayBlockingQueue;

public class BlockingQueueTest {

    public static void main(String[] args) throws InterruptedException {
        // 创建队列的对象,容量为1
        // new ArrayBlockingQueue<>(1) :表示队列中最多放1个
        ArrayBlockingQueue<String> abq = new ArrayBlockingQueue<>(1);
        // 存储元素
        abq.put("汉堡包");
        // 取出元素
        String take = abq.take();
        // 因为队列中只有一个元素,第二次取不出来,就会一值等待,从而阻塞。
        String take1 = abq.take();
        
        System.out.println(take);
        System.out.println("程序结束!");

    }

}