~~~
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
- 第一章
- 介紹
- 第一節