1. 程式人生 > >JDK併發之:執行緒池四(自定義ThreadFactory)

JDK併發之:執行緒池四(自定義ThreadFactory)

ThreadPoolExecutor的建構函式中,執行緒的生成有ThreadFactory生成,建構函式中的ThreadFactory預設為Eexecutors.defaultThreadFactory()。自定義ThreadFactory可以根治執行緒池究竟何時建立了多少執行緒,也可以自定義執行緒的名稱、組以及優先順序等資訊,甚至可以任性的將執行緒設定為守護執行緒。總之,自定義ThreadFactory可以更加自由的設定執行緒池中所有執行緒的狀態。看個例子吧:

ThreadPoolExecutor executor = newThreadPoolExecutor(5,10, 0L, TimeUnit.

MILLISECONDS,

 newSynchronousQueue(),

 new ThreadFactory() {       //自定義ThreadFactory

 @Override

 public Thread newThread(Runnable r) {

                     Thread t  new Thread(r);

                     System.out.println("生成執行緒 "+t);

 return t;

                  }

              });

       Runnable r = ()->{

           System.out.println(Thread.currentThread().getName()+" 在忙...");

 try{

              Thread.sleep(100);

           }catch(InterruptedException e){

 e.printStackTrace();

           }

       };

 for(int i=0;i<10;i++){

 executor.submit(r);

       }

 executor.shutdown();

相關推薦

JDK併發執行定義ThreadFactory

ThreadPoolExecutor的建構函式中,執行緒的生成有ThreadFactory生成,建構函式中的ThreadFactory預設為Eexecutors.defaultThreadFactory()。自定義ThreadFactory可以根治執行緒池究竟何時建立了多少執

八、JAVA多執行執行原理以及定義執行 ThreadPool

為什麼會需要執行緒池技術? (1)Thread是一個重量級的資源,它的建立,啟動以及銷燬都是比較耗費效能的;重複利用執行緒,減少執行緒建立,銷燬的開銷,是一種好的程式設計習慣。 (2)通過new Thread的方法建立執行緒難以管理,並且難以控制數量,執行緒的數量通常和系統的效能呈拋

Java併發二十一執行實現原理 Java併發十八阻塞佇列BlockingQueue Java併發十八阻塞佇列BlockingQueue Java併發程式設計執行的使用

一、總覽 執行緒池類ThreadPoolExecutor的相關類需要先了解:  (圖片來自:https://javadoop.com/post/java-thread-pool#%E6%80%BB%E8%A7%88) Executor:位於最頂層,只有一個 execute(Runnab

Java併發程式設計執行的使用

如果併發的執行緒數量很多,並且每個執行緒都是執行一個時間很短的任務就結束了,這樣頻繁建立執行緒就會大大降低系統的效率,因為頻繁建立執行緒和銷燬執行緒需要時間。   那麼有沒有一種辦法使得執行緒可以複用,就是執行完一個任務,並不被銷燬,而是可以繼續執行其他的任務?   在J

Java併發程式設計執行的使用轉載

轉載自:https://www.cnblogs.com/dolphin0520/p/3932921.html Java併發程式設計:執行緒池的使用   在前面的文章中,我們使用執行緒的時候就去建立一個執行緒,這樣實現起來非常簡便,但是就會有一個問題:   如果併發的執行緒數量很多,並且每個執行緒都是執行

JAVA併發程式設計執行 ThreadPoolExecutor

生活 前期追深度,否則會華而不實,後期追廣度,否則會坐井觀天; 前言 在前面,我們已經對Thread有了比較深入的瞭解,並且已經學會了通過new Thread()來建立一個執行緒,並通過start方法來啟動一個執行緒,這種方法非常簡單,同樣也存在弊端: 1、每次通過new Thr

Java高併發程式設計執行

這裡首先介紹了java5中的併發的小工具包:java.util.concurrent.atomic,然後介紹了執行緒池的概念,對使用java5的方式建立不同形式的執行緒進行了演示,之後介紹了兩個 物件:Callable和Future,用於獲取執行緒執行後的結果,

JAVA併發程式設計執行Executors

Java中對執行緒池提供了很好的支援,有了執行緒池,我們就不需要自已再去建立執行緒。如果併發的執行緒數量很多,並且每個執行緒都是執行一個時間很短的任務就結束了,頻繁建立執行緒就會大大降低系統的效率,因為頻繁建立執行緒和銷燬執行緒需要時間。JAVA的執行緒池中的執行緒可以在執

Java併發程式設計執行ThreadPoolExecutor

  多執行緒的程式的確能發揮多核處理器的效能。雖然與程序相比,執行緒輕量化了很多,但是其建立和關閉同樣需要花費時間。而且執行緒多了以後,也會搶佔記憶體資源。如果不對執行緒加以管理的話,是一個非常大的隱患。而執行緒池的目的就是管理執行緒。當你需要一個執行緒時,你就可以拿一個空閒執行緒去執行任務,當任務執行完後,

EventBus原始碼分析執行模型分析2.4版本

EventBus有四種執行緒模型 PostThread模式不需執行緒切換,直接在釋出者執行緒進行事件處理。 MainThread模式分類討論:釋出者執行緒是主執行緒則直接呼叫事件處理方法,否則通過Handler進行執行緒切換,切換到主執行緒處理事件,該模

Tomcat中的執行原理APR和ThreadPool

一、容器簡化了程式設計師自身的多執行緒程式設計。         各種Web容器,如Tomcat,Resion,Jetty等都有自己的執行緒池(可在配置檔案中配置),所以在客戶端進行請求呼叫的時候,程式設計師不用針對Client的每一次請求,都新建一個執行緒。而容器會自

Java 執行ThreadPoolExecutor基於jdk1.8

介紹 執行緒池的作用就是提供一種對執行緒的管理,避免由於過多的建立和銷燬執行緒所造成的開銷。在一個“池”中維護著一定數量的執行緒,達到可重複利用的效果。在Java中,執行緒池的實現主要是通過Threa

Java 執行ThreadPoolExecutor基於jdk1.8

private boolean addWorker(Runnable firstTask, boolean core) 首先分析一下引數,firstTask就是指我們使用者傳入的需要執行的認為,

建立執行那麼容易,為什麼非要讓我使用執行深深深入剖析

一、概述 1、問題 先看我們遇到的問題:我們建立執行緒的方式很簡單,new Thread(() -> {...}),就是因為這麼簡單粗暴的方式,才帶來了致命的問題。首先執行緒的建立和銷燬都是很耗時很浪費效能的操作,你用執行緒為了什麼?為了就是非同步,為了就是提升效能。簡單的new三五個Thread還好,

Docker 系列定義倉庫.

html 交互 reload 寫入 get ror tls 比較 nexus3 一、Docker hub 交互 Docker hub 是 Docker 官方維護的一個公共倉庫,大部分需求都可以通過在 Docker hub 中直接下載鏡像來完成。接下來,來看一下怎麽

少說話多寫程式碼Python學習056——標準模組定義模組

我們前面知道了如何匯入外部模組,比如常用的math模組, import math print(math.sin(90)) 輸出 0.8939966636005579 我們也可以自己定義一個模組,比如我的程式都在這個目錄下, 圖1 然後在當前目錄下,再建立一個MyFirstLi

JDK併發包-執行複用執行

為了避免系統頻繁地建立和銷燬執行緒,我們可以讓建立的執行緒進行復用。執行緒池中,總有那麼幾個活躍執行緒。當你需要使用執行緒時,可以從池子中隨便拿一個空閒執行緒,當完成工作時,並不急著關閉執行緒,而是將整個執行緒退回到池子,方便其他人使用。 1.1 JDK對執行緒池的支援 JDK提供一

併發第十執行的介紹及使用

單執行緒就不說了因為簡單,並且 在實際的生產環境中一般必須來說 執行緒資源都是由執行緒池提供執行緒資源的。 執行緒池的好處 重用存在的執行緒,減少物件建立、消亡的開銷,效能好 可有效控制最大併發執行緒數,提高系統資源利用率,同時可以避免過多資源競爭,避免阻塞。 提供定時執行、定期執行、單執行緒、併發數控制等

慕課網實戰·高併發探索執行 Executor

特別感謝:慕課網jimin老師的《Java併發程式設計與高併發解決方案》課程,以下知識點多數來自老師的課程內容。 jimin老師課程地址:Java併發程式設計與高併發解決方案 new Thread的弊端 每次new Thread 新建物件,效能

C++11併發學習執行的實現

為什麼要使用執行緒池?       目前的大多數網路伺服器,包括Web伺服器、Email伺服器以及資料庫伺服器等都具有一個共同點,就是單位時間內必須處理數目巨大的連線請求,但處理時間卻相對較短。       傳統多執行緒方案中我們採用的伺服器模型則是一旦接受到請求之後,即建立