1. 程式人生 > >Java多執行緒執行緒池(4)--執行緒池的五種狀態

Java多執行緒執行緒池(4)--執行緒池的五種狀態

執行緒池的5種狀態:Running、ShutDown、Stop、Tidying、Terminated。

執行緒池各個狀態切換框架圖:

image

1、RUNNING

(1) 狀態說明:執行緒池處在RUNNING狀態時,能夠接收新任務,以及對已新增的任務進行處理。
(02) 狀態切換:執行緒池的初始化狀態是RUNNING。換句話說,執行緒池被一旦被建立,就處於RUNNING狀態,並且執行緒池中的任務數為0!

private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));

2、 SHUTDOWN

(1) 狀態說明:執行緒池處在SHUTDOWN狀態時,不接收新任務,但能處理已新增的任務。
(2) 狀態切換:呼叫執行緒池的shutdown()介面時,執行緒池由RUNNING -> SHUTDOWN。

3、STOP

(1) 狀態說明:執行緒池處在STOP狀態時,不接收新任務,不處理已新增的任務,並且會中斷正在處理的任務。
(2) 狀態切換:呼叫執行緒池的shutdownNow()介面時,執行緒池由(RUNNING or SHUTDOWN ) -> STOP。

4、TIDYING

(1) 狀態說明:當所有的任務已終止,ctl記錄的”任務數量”為0,執行緒池會變為TIDYING狀態。當執行緒池變為TIDYING狀態時,會執行鉤子函式terminated()。terminated()在ThreadPoolExecutor類中是空的,若使用者想線上程池變為TIDYING時,進行相應的處理;可以通過過載terminated()函式來實現。
(2) 狀態切換:當執行緒池在SHUTDOWN狀態下,阻塞佇列為空並且執行緒池中執行的任務也為空時,就會由 SHUTDOWN -> TIDYING。
當執行緒池在STOP狀態下,執行緒池中執行的任務為空時,就會由STOP -> TIDYING。

5、 TERMINATED

(1) 狀態說明:執行緒池徹底終止,就變成TERMINATED狀態。
(2) 狀態切換:執行緒池處在TIDYING狀態時,執行完terminated()之後,就會由 TIDYING -> TERMINATED。

文章只是作為自己的學習筆記,借鑑了網上的許多案例,如果覺得闊以的話,希望多交流,在此謝過…

相關推薦

Java執行執行4--執行狀態

執行緒池的5種狀態:Running、ShutDown、Stop、Tidying、Terminated。 執行緒池各個狀態切換框架圖: 1、RUNNING (1) 狀態說明:執行緒池處在RUNNING狀態時,能夠接收新任務,以及對已新增的任務進行處理。

.NET執行技術詳解4 執行優先順序

執行緒優先順序從高到低分為:Highest 、AboveNormal、Normal、BelowNormal、Lowest共5個等級。通過設定Thread類的ThreadPriority屬性(可讀寫屬性)來調整。 範例: 下面的程式碼示例說明了更改執行緒優先順序的結果。建立兩

java基礎執行4執行可見性volatile 執行封閉threadlocal CAS操作

一。執行緒的可見性volatile(不是太常用,因為他只能解決執行緒可見和阻止指令排序,並不能解決多執行緒的併發問題) volatile:(1)保證變數的修改讓所有執行緒可見 (2)阻止指令排序 這個程式有3個結果,0,42,沒有進入迴圈直接結束

執行4-執行

Java5之後提供了執行緒池ThreadPool, concurrent包下的Executors提供了很多建立執行緒池的方法,根據不同需要,分開使用。包括但不限於 newFixedThreadPool

Java執行2——執行中的幾個重要方法詳解

【內容摘要】 在java中,如果需要進行多執行緒程式設計,可以採用java自帶的執行緒池來實現,執行緒池對於我們新手來說是一個非常好的選擇,因為我們可以不用關心執行緒池中執行緒是如何排程的,避免在多執行緒程式設計過程產生死鎖等問題。在瞭解執行緒池的使用前,本文

java併發——執行執行機制和如何使用

合理利用執行緒池能夠帶來三個好處。 1、第一:降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷燬造成的消耗。 2、第二:提高響應速度。當任務到達時,任務可以不需要的等到執行緒建立就能立即執行。 3、第三:提高執行緒的可管理性。執

執行4-執行

目錄 1.1JDK對執行緒池的支援 為了更好的能夠控制多執行緒,JDK提供了一套Executor框架,其本質是一個執行緒池。                                                              

ava執行程式設計-4-執行間通訊機制的介紹與使用

原文出自 : https://blog.csdn.net/xlgen157387/article/details/78195817 執行緒間通訊簡介 我們知道執行緒是作業系統中獨立的個體,但是這個單獨的個體之間沒有一種特殊的處理方式使之成為一個整體,執行緒之間沒有任何交

Python學習總結筆記4--執行區域性變數之Threading.local

當我們使用執行緒的時候,能使用執行緒的區域性變數,就儘量不要用全域性變數,因為使用全域性變數涉及同步的問題(參見我的上一篇部落格Python學習總結筆記(3)–多執行緒與執行緒同步 )。 使用區域性變數的時候,需要傳遞引數,比如有這樣一個例子,程式需要處理客戶

學習筆記之執行、Thread類和執行終止相關整理——執行異常&JVM停止

提到執行緒的中斷在某些情況下會丟擲InterruptedException異常,最終導致執行緒的終止。其實,執行緒也有可能由於其他異常原因造成終止,在某些情況下為了做一些妥善的處理,我們需要捕獲這些異常情況。看下面程式碼,覺得會怎樣? 1 2 3 4 5

std::thread執行庫詳解4

## 目錄 - [目錄](#目錄) - [前言](#前言) - [條件變數](#條件變數) - [一些需要注意的地方](#一些需要注意的地方) - [總結](#總結) ## 前言 本文主要介紹了多執行緒中的條件變數,條件變數在多執行緒同步中用的也比較多。我第一次接觸到條件變數的時候是在完成一個多執行

spring4.2.9 java專案環境下ioc原始碼分析——執行refresh之前

本系列文章講述spring IOC容器如何載入Bean與例項化Bean以及其中所穿插的一些實現。本文章以ClassPathXmlApplicationContext為起點,debug啟動流程。程式碼如下public static void main(String[] args

線程簡單實例3線程

out ted second bst 內部 trac tex bstr cnblogs 為什麽要用線程池? 每次用線程的時候都去new一個,不麻煩麽。如果線程用到較少可以。當需要大量用到線程時,頻繁的創建線程,而且創建線程和銷毀帶來的開銷也會隨之增多。 線程池就像一個執行器

JavaScript執行環境及作用域——執行環境棧和作用域鏈機制

執行環境是JavaScript中最為重要的一個概念,每個執行環境都有一個與之關聯的變數物件,執行環境中所有的變數和函式都儲存在這個物件中。我們編寫的程式碼是無法訪問這個變數物件的,只有解析器在處理資料時會在後臺使用它,但有個例外,因為在Web瀏覽器中,全域性執行環境關聯的變數物件是window物件,windo

Java線程和並發,線程返回值獲取方式和Callable接口

current tst tar cal rup thread 線程等待 lease sub 目錄 1.主線程等待法 2.使用Thread類的join()阻塞當前線程,等待子線程執行完畢 3.通過Callable接口實現:通過FutureTask Or線程池獲取 四、線程返回

Java線程和並發,ReentrantLock公平鎖

code rtl cat read thread ron true sta 目錄 目錄 1.ReentrantLock 2.ReentrantLock的實現 3.synchronized和ReentrantLock的區別 九、ReentrantLock(公平鎖) 1.Ree

Java線程和並發,Thread中的start和run的區別

() main alt exception adt 方法 的區別 @override att 目錄 1.調用run方法 2.調用start方法 3.start和run的區別 二、Thread中的start和run的區別 1.調用run方法 public class Thr

Java線程和並發,進程與線程的區別

img 分享 com image font str src spa .com 目錄 1.進程和線程的由來 2.進程和線程的定義 3.進程和線程的區別 一、進程和線程的區別 1.進程和線程的由來 2.進程和線程的定義   進程是資源分配的最小單位,線程是CPU調度的最

Java線程和並發,Thread類和Runnable接口

ble thread cal ima spa ont 目錄 span 分享 目錄 1.Thread和Runnable接口 三、Thread類和Runnable接口 1.Thread和Runnable接口 Java多線程和並發(三),Thread類和Runnable

Java線程和並發,synchronized底層原理

圖片 同步 ont 目錄 public java多線 println 自旋 編譯 目錄 1.對象頭(Mark Word) 2.對象自帶的鎖(Monitor) 3.自旋鎖和自適應自旋鎖 4.偏向鎖 5.輕量級鎖 6.偏向鎖,輕量級鎖,重量級鎖聯系 八、synchronized