package com.neutron.t22;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
/**
* Queue
* 1.并发加锁 ConcurrentLinkQueue
* 2.阻塞式 LinkBlockingQueue 无界队列,什么时候内存填满,就结束
* ArrayBlockQueue 有界队列,有个数限制
*/
public class T226ArrayBlockingQueue {
static BlockingQueue<String> queue = new ArrayBlockingQueue(10);
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i < 10; i++) {
queue.put("i" + i);
}
// result: Exception in thread "main" java.lang.IllegalStateException: Queue full
// queue.add("more");
// result: 没有异常,等待操作,程序进行阻塞
// queue.put("more");
// result:没有结果,程序结束, offer返回值告诉是否添加成功
// queue.offer("more");
// result:1秒后如果添加不进去,不再添加
queue.offer("more", 1, TimeUnit.SECONDS);
System.out.println(queue);
}
}
thread39 - ArrayBlockingQueue
最新推荐文章于 2022-07-09 13:27:11 发布