中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做冰淇淋生意網(wǎng)站企業(yè)查詢系統(tǒng)

做冰淇淋生意網(wǎng)站,企業(yè)查詢系統(tǒng),網(wǎng)站開發(fā)主框架一般用什么布局,網(wǎng)頁設(shè)計(jì)軟件列表點(diǎn)擊查看上節(jié)回顧 在上一節(jié)當(dāng)中,已經(jīng)實(shí)現(xiàn)了一個(gè)線程池,在本節(jié)當(dāng)中,我們需要添加拒絕策略。這里使用到了策略模式的設(shè)計(jì)模式,因?yàn)榫芙^策略是多種的,我們需要將這個(gè)權(quán)利下放給調(diào)用者(由調(diào)用者來指定我要采取哪種策略…

上節(jié)回顧

在上一節(jié)當(dāng)中,已經(jīng)實(shí)現(xiàn)了一個(gè)線程池,在本節(jié)當(dāng)中,我們需要添加拒絕策略。這里使用到了策略模式的設(shè)計(jì)模式,因?yàn)榫芙^策略是多種的,我們需要將這個(gè)權(quán)利下放給調(diào)用者(由調(diào)用者來指定我要采取哪種策略),而線程池只需要調(diào)用拒絕的接口即可。
在這里插入圖片描述

步驟

(1)定義拒絕策略接口
(2)在線程池中加入拒絕策略參數(shù)
(3)自行調(diào)用測(cè)試

1.定義接口類

@FunctionalInterface
interface RejectPolicy<T>{//注意傳遞參數(shù)void reject(BlockQueue<T> queue,Runnable task);
}

2.線程池中添加接口以及調(diào)用方法

@Slf4j
class ThreadPool {//任務(wù)隊(duì)列private BlockQueue<Runnable> taskQueue;//線程集合 我們需要對(duì)線程做一個(gè)包裝private HashSet<Worker> workers = new HashSet<>();//核心線程數(shù)量private long coreSize;//超時(shí)時(shí)間private long timeout;//時(shí)間單位private TimeUnit timeUnit;//自定義拒絕策略private RejectPolicy<Runnable> rejectPolicy;public ThreadPool(int queueCapacity,long coreSize,long timeout,TimeUnit timeUnit){this.taskQueue = new BlockQueue<>(queueCapacity);this.coreSize = coreSize;this.timeout = timeout;this.timeUnit = timeUnit;this.rejectPolicy = (queue, task) -> {throw new RuntimeException();};}public ThreadPool(int queueCapacity,long coreSize,long timeout,TimeUnit timeUnit,RejectPolicy<Runnable> rejectPolicy){taskQueue = new BlockQueue<>(queueCapacity);this.coreSize = coreSize;this.timeout = timeout;this.timeUnit = timeUnit;this.rejectPolicy = rejectPolicy;}//執(zhí)行任務(wù)public void execute(Runnable task){//當(dāng)任務(wù)數(shù)量尚未超過coreSizesynchronized (workers){if (workers.size() < coreSize){log.info("創(chuàng)建工作線程{}",task);Worker worker = new Worker(task);workers.add(worker);worker.start();}else{log.info("加入到任務(wù)隊(duì)列{}",task);//有可能會(huì)阻塞在這里 進(jìn)而將主線程阻塞掉//taskQueue.put(task);//這里會(huì)有很多種策略自定義策略//策略模式:操作抽象成接口實(shí)現(xiàn)代碼是傳過來不會(huì)寫死taskQueue.tryPut(rejectPolicy,task);//rejectPolicy.reject(taskQueue,task);}}}class Worker extends Thread{private Runnable task;public Worker(Runnable task){this.task = task;}@Overridepublic void run() {while (task != null || (task = taskQueue.poll(timeout,timeUnit)) != null){try {log.info("正在執(zhí)行...{}",task);//執(zhí)行任務(wù)task.run();}catch (Exception e){System.out.println(e.getMessage());}finally {//不要忘記這一步task = null;}}synchronized (workers){log.info("worker被移除{}",this);workers.remove(this);}}}
}

3.main測(cè)試

@Slf4j
public class TestPool {//阻塞隊(duì)列是平衡生產(chǎn)者和消費(fèi)者之間的中介//任務(wù)數(shù)量超過任務(wù)隊(duì)列的情況public static void main(String[] args) {ThreadPool threadPool = new ThreadPool(10, 2, 1000, TimeUnit.MICROSECONDS, (queue, task) -> {//1.死等queue.put(task);//2.超時(shí)等待queue.offer(task, 1500, TimeUnit.MICROSECONDS);//3.調(diào)用者自己放棄// log.debug("放棄{}",task);//4.調(diào)用者拋異常//throw new RuntimeException("task執(zhí)行失敗" + task);//5.調(diào)用者自己執(zhí)行task.run();});for (int i = 0; i < 20; i++) {int j = i;//主線程可能會(huì)在這里阻塞threadPool.execute(() -> {try {Thread.sleep(30000);} catch (InterruptedException e) {throw new RuntimeException(e);}TestPool.log.debug("{}", j);});}}
}
http://www.risenshineclean.com/news/51926.html

相關(guān)文章:

  • 湘潭網(wǎng)站建設(shè)是什么營(yíng)銷網(wǎng)站建設(shè)流程
  • 網(wǎng)站中文域名好嗎職業(yè)培訓(xùn)機(jī)構(gòu)有哪些
  • 什么網(wǎng)站可以發(fā)布信息百度推廣效果怎么樣
  • 磐石網(wǎng)站seo站外推廣方式
  • app小程序網(wǎng)站開發(fā)是什么免費(fèi)建一級(jí)域名網(wǎng)站
  • 手機(jī)wordpress建站教程野狼seo團(tuán)隊(duì)
  • 網(wǎng)站規(guī)劃的流程網(wǎng)絡(luò)廣告一般是怎么收費(fèi)
  • c2c的盈利模式seo優(yōu)化標(biāo)題 關(guān)鍵詞
  • 鄭州天梯網(wǎng)站制作青島網(wǎng)絡(luò)推廣公司哪家好
  • 網(wǎng)站關(guān)鍵詞沒被搜出來互聯(lián)網(wǎng)營(yíng)銷師課程
  • 惠陽市網(wǎng)站建設(shè)論壇推廣的步驟
  • wordpress恢復(fù)舊編輯器seo自動(dòng)刷外鏈工具
  • 早那么做商城網(wǎng)站營(yíng)銷軟文模板
  • 關(guān)掉wordpress站點(diǎn)google 谷歌
  • 關(guān)于加強(qiáng)學(xué)校網(wǎng)站建設(shè)的通知網(wǎng)絡(luò)推廣的手段
  • 徐州建站短網(wǎng)址
  • 那些做電影的網(wǎng)站賺錢嗎哈爾濱seo和網(wǎng)絡(luò)推廣
  • wordpress 數(shù)據(jù)表結(jié)構(gòu)南京百度seo代理
  • 廣東網(wǎng)站建設(shè)哪家好網(wǎng)絡(luò)營(yíng)銷軟件站
  • 做海報(bào)用什么網(wǎng)站seo技術(shù)交流論壇
  • 做進(jìn)化樹的在線網(wǎng)站seo刷關(guān)鍵詞排名免費(fèi)
  • 織夢(mèng)網(wǎng)站添加視頻教程各種網(wǎng)站
  • 黑糖不苦建設(shè)的網(wǎng)站網(wǎng)上營(yíng)銷培訓(xùn)課程
  • 個(gè)人網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)結(jié)論關(guān)鍵詞排名優(yōu)化軟件價(jià)格
  • 推拿網(wǎng)站制作關(guān)鍵詞推廣營(yíng)銷
  • 網(wǎng)站開發(fā)者購(gòu)物支付模板競(jìng)價(jià)廣告是什么意思
  • 網(wǎng)上做任務(wù)的網(wǎng)站深圳小程序開發(fā)公司
  • 牛商網(wǎng)做的網(wǎng)站如何網(wǎng)站設(shè)計(jì)公司排行榜
  • 平面設(shè)計(jì)好的網(wǎng)站百度com打開
  • 大數(shù)據(jù)平臺(tái)建站最經(jīng)典的營(yíng)銷案例