欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 打造阻塞式線程池的實例詳解

 更新時間:2017年07月30日 10:14:13   作者:steeven  
這篇文章主要介紹了java 打造阻塞式線程池的實例詳解的相關(guān)資料,這里提供實例幫助大家,理解這部分知識,需要的朋友可以參考下

java 打造阻塞式線程池的實例詳解

原來以為tiger已經(jīng)自帶了這種線程池,就是在任務(wù)數(shù)量超出時能夠阻塞住投放任務(wù)的線程,主要想用在JMS消息監(jiān)聽。

開始做法:

ThreadPoolExcecutor中代入new ArrayBlockingQueue(MAX_TASK). 在任務(wù)超出時報錯:RejectedExecutionException。

后來不用execute方法加入任務(wù),直接getQueue().add(task), 利用其阻塞特性。但是發(fā)現(xiàn)阻塞好用了,但是任務(wù)沒有被處理。一看Queue,暈啊,原來都在里面,任務(wù)池就沒處理它。看樣還是要走任務(wù)池。

最后自己重載了一個BlockedThreadPoolExecutor:

 private ReentrantLock pauseLock = new ReentrantLock();
 private Condition unpaused = pauseLock.newCondition();
 @Override
 public void execute(Runnable command) {
 pauseLock.lock();
 try {
  while (getPoolSize()==getMaximumPoolSize() && getQueue().remainingCapacity()==0)
  unpaused.await();
  super.execute(command);//放到lock外面的話,在壓力測試下會有漏網(wǎng)的!
 } catch (InterruptedException e) {
  log.warn(this, e);
 } finally {
  pauseLock.unlock();
 }
 }
 @Override
 protected void afterExecute(Runnable r, Throwable t) {
 super.afterExecute(r,t);
 try{
  pauseLock.lock();
  unpaused.signal();
 }finally{
  pauseLock.unlock();
 }
 }

多線程程序很容易出錯,寫好了要拼命的用壓力測試,否則問題多多啊~~~

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持,如有疑問請留言或者到本站社區(qū)交流討論!

相關(guān)文章

  • 在SSM框架中將圖片上傳到數(shù)據(jù)庫中的實現(xiàn)代碼

    在SSM框架中將圖片上傳到數(shù)據(jù)庫中的實現(xiàn)代碼

    這篇文章主要介紹了在SSM框架中將圖片上傳到數(shù)據(jù)庫中的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Javaweb-HttpServletResponse的sendRedirectch重定向方式

    Javaweb-HttpServletResponse的sendRedirectch重定向方式

    這篇文章主要介紹了Javaweb-HttpServletResponse的sendRedirectch重定向方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • springboot常用語法庫的基本語法

    springboot常用語法庫的基本語法

    FreeMarker 是一款?模板引擎: 即一種基于模板和要改變的數(shù)據(jù), 并用來生成輸出文本(HTML網(wǎng)頁,電子郵件,配置文件,源代碼等)的通用工具,這篇文章主要介紹了springboot常用語法庫的基本語法,需要的朋友可以參考下
    2022-12-12
  • Java 接口和抽象類的區(qū)別詳解

    Java 接口和抽象類的區(qū)別詳解

    在面向?qū)ο缶幊讨校橄箢惡徒涌谑莾蓚€經(jīng)常被用到的語法概念,是面向?qū)ο笏拇筇匦?,以及很多設(shè)計模式、設(shè)計思想、設(shè)計原則編程實現(xiàn)的基礎(chǔ)。本文將主要講解二者的區(qū)別
    2021-05-05
  • Java中使用Filter過濾器的方法

    Java中使用Filter過濾器的方法

    Filter過濾器是javaWeb層面的,它跟Servlet類似,每次前端請求,首先進入的是過濾器,我們必須實現(xiàn)Filter接口,重寫三個方法,才能使用Filter過濾器,需要的朋友可以參考下
    2021-06-06
  • SpringBoot整合阿里云視頻點播的過程詳解

    SpringBoot整合阿里云視頻點播的過程詳解

    視頻點播(ApsaraVideo for VoD)是集音視頻采集、編輯、上傳、自動化轉(zhuǎn)碼處理、媒體資源管理、分發(fā)加速于一體的一站式音視頻點播解決方案。這篇文章主要介紹了SpringBoot整合阿里云視頻點播的詳細過程,需要的朋友可以參考下
    2021-12-12
  • Spring?Boot如何配置yml配置文件定義集合、數(shù)組和Map

    Spring?Boot如何配置yml配置文件定義集合、數(shù)組和Map

    這篇文章主要介紹了Spring?Boot?優(yōu)雅配置yml配置文件定義集合、數(shù)組和Map,包括Spring?Boot?yml配置文件定義基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的方式,需要的朋友可以參考下
    2023-10-10
  • Struts2學(xué)習(xí)筆記(6)-簡單的數(shù)據(jù)校驗

    Struts2學(xué)習(xí)筆記(6)-簡單的數(shù)據(jù)校驗

    這篇文章主要介紹Struts2中的數(shù)據(jù)校驗,通過一個簡單的例子來說明,希望能給大家做一個參考。
    2016-06-06
  • Java 簡化正則表達式的使用

    Java 簡化正則表達式的使用

    本篇文章主要介紹了Java 簡化正則表達式使用的相關(guān)知識,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • Java多線程中的單例模式兩種實現(xiàn)方式

    Java多線程中的單例模式兩種實現(xiàn)方式

    這篇文章主要介紹了Java多線程中的單例模式兩種實現(xiàn)方式的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評論