Producer线程

package com.thread.communication.blockingqueue;

import java.util.concurrent.BlockingQueue;

public class Producer extends Thread{
private BlockingQueue<String> bq; public Producer(BlockingQueue<String> bq){
this.bq=bq;
} public void run(){
String[] strArr = new String[]
{"Java","Struts","Spring"};
for(int i=0;i<99999999;i++){
System.out.println(getName() + "生产者准备生产集合元素");
try{
Thread.sleep(200);
//如果传入的的bq的length是1,那么put一个值,就会出现阻塞现象
bq.put(strArr[i % 3]);//求余数 0 1 2
}catch(Exception ex){
ex.printStackTrace();
} System.out.println(getName()+"生产完成"+ bq); }
} }

Consumer线程

package com.thread.communication.blockingqueue;

import java.util.concurrent.BlockingQueue;

public class Consumer extends Thread{
private BlockingQueue<String> bq;
public Consumer(BlockingQueue<String> bq){
this.bq=bq;
}
public void run(){
while(true){
System.out.println(getName()+"消费者准备消费集合元素");
try{
Thread.sleep(200);
//当bq被取空时,出现阻塞
bq.take();
}catch(Exception ex){
ex.printStackTrace();
}
System.out.println(getName()+ "消费完成"+bq);
}
} }

测试类

package com.thread.communication.blockingqueue;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; public class BlockingQueueTest {
public static void main(String[] args){
BlockingQueue<String> bq = new ArrayBlockingQueue<>(1); new Producer(bq).start();
new Producer(bq).start();
new Producer(bq).start(); new Consumer(bq).start();
} }

最新文章

  1. PC互联网和移动互联网的本质差别
  2. MFC 打开文件对话框 打开单个文件
  3. [BZOJ 3038]上帝造题的7分钟2(树状数组)
  4. c3p0、dbcp&lt;转&gt;
  5. hdu 1288 Hat&#39;s Tea
  6. 由strupr,strlwr体会如果将字符常量转换为变量进行修改,体会常量的静态存储
  7. 学php之翻译wordpress(2)
  8. Robotframe work之环境搭建(一)
  9. 使用multidex解决64K方法引用的限制
  10. python序列类型字符串的方法L.index()与L.find()区别
  11. Servlet、ServletConfig、ServletContext深入学习
  12. Codefores 835C-Star sky
  13. 利用ImageOps调整图片的Aspect Ratio(给图片添加borders)
  14. iOS - UITableView滚动到指定的cell并且选中
  15. spring data jpa条件分组查询及分页
  16. webpack快速入门(三):资源管理
  17. ASP.NET MVC实现一个用户只能登录一次 单用户登录
  18. Redis,传统数据库,HBase,Hive区别联系
  19. 洛谷P1119 灾后重建
  20. python爬取豌豆荚中的详细信息并存储到SQL Server中

热门文章

  1. VS + Qt5Designer + Anaconda环境配置
  2. Webview页面的控件元素定位
  3. storm是怎样保证at least once语义的
  4. CF 445A(DZY Loves Chessboard-BW填充)
  5. xorm
  6. Android笔记之获取应用程序文件目录
  7. Mac下通过命令行安装npm install -g 报错,如何解决?
  8. Oracle Meger into 函数
  9. android系统启动框架、Activity界面显示过程详解
  10. java中的break与continue