~~~
public class Provider implements{
//共享缓冲区
private BlockingQueue<Data> queue;
//多线程间是否启动的变量,有强制从主存中刷新的功能,即使返回线程状态
private volatile boolean isRunning =true;
//id生成器
private static AtomicInteger count =new AtomicInteger();
//随机对象
private static Random r=new Random();
public Provider(BlockingQueue<Data> queue){
this.queue=queue;
}
public void run(){
while(isRunning){
//随机休眠0-1000ms,表示数据获取
try{
Thread.sleep(r.nextInt(1000));
int id=count.incrementAndGet();
Data data=new Data(Integer.toString(id),"数据"+id);
System.out.println("当前线程:"+ Thread.currentThread().getName() + ",获取了数据,id为:"+ id+ ",进行装载到公共缓冲区中。。。");
if(!this.queue.offer(data,2,TimeUnit.SECONDS)){
System.out.print("提交缓冲区数据失败");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.print("aaa");
}
}
//用控制变量进行终止
public void stop(){
this.isRunning = false;
}
~~~
- 序
- 求职路
- 笔试准备
- Huawei题库
- 剑指Offer
- 面试准备
- Java技术栈
- 设计模式
- Java框架
- Spring
- SpringBoot
- SpringCloud
- SpringMVC
- Spring基础
- ORM
- Hibernate
- MyBatis
- 分布式
- 分布式计算
- 分布式存储
- 消息队列
- 消息中间件
- 生产者消费者
- Provider
- Data
- Consumer
- Main
- 校招宣讲招聘会
- 哈工大九月
- 数据库
- MySQL
- Redis
- 面试经历
- Alibaba
- 第二面-Alibaba
- 第一面-Alibaba
- Xiaomi
- Xiaomi一面
- Xiaomi二面
- Yonyou
- Yonyou一面+HR
- Huawei
- Huawei一面
- Huawei二面
- 一个小结
- 工作路
- 万里长征第一步
- Huawei签约
- 技术路
- 开源之路
- 初试探
- 技术栈
- 编程语言
- OpenCV
- 从Java 和C++玩转OpenCV
- 第一章
- 介绍
- 第一节