java.util.concurrent

1.接口 BlockingQueue  : 
通常用于一个线程生产对象,而另一个线程消费这些对象的场景。

队列满了后,往里放的线程会被阻塞;
队列空了之后,取任务的线程会被阻塞;

常用实现有:ArrayBlockingQueue,LinkedBlockingQueue

psvmPut(){

BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10); 
	for(int i=0;i<10;i++){
		queue.put(i);
	}
	queue.add(11);  //满了之后,add方法会抛异常
	queue.offer(11); //offer方法会返回特定值:true 和 false
	queue.put(11); 
	//put方法是队列的经典方法,经常会使用,需重点掌握,满了后会产生阻塞 
	//当队列有剩余容量(被消费时),阻塞会放开
	queue.offer(11,3,TimeUnit.SECONDS); //超时会放开,有剩余容量会放开
}

psvmTimeOut(){
	BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(0); 
	queue.offer(11,3,TimeUnit.SECONDS);
	psvmTimeOut();
}

psvmPop(){

BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10); 
queue.remove(); //队列为空,remove方法会抛异常
queue.poll();   //poll方法返回特定值:null 和 元素值
queue.take();   //take方法会阻塞
queue.pull(3,TimeUnit.SECONDS); //超时方法
}

补充:
DelayQueue 的元素必须实现 Delayed 接口;
PriorityBlockingQueue 的元素必须实现 Comparable 接口;
SynchronousQueue 是一个特殊队列,它的内部一个时间点只能容纳单个元素;
BlockingDequeue :putFirst,putLast;takeFirst,takeLast;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值