1. 程式人生 > >概括的解釋下執行緒的幾種可用狀態

概括的解釋下執行緒的幾種可用狀態

1. 新建( new ):新建立了一個執行緒物件。 2. 可執行( runnable ):執行緒物件建立後,其他執行緒(比如 main 執行緒)呼叫了該物件 的 start ()方法。該狀態的執行緒位於可執行執行緒池中,等待被執行緒排程選中,獲 取 cpu 的使用權 。 3. 執行( running ):可執行狀態( runnable )的執行緒獲得了 cpu 時間片( timeslice ) ,執行程式程式碼。 4. 阻塞( block ):阻塞狀態是指執行緒因為某種原因放棄了 cpu 使用權,也即讓出了 cpu timeslice ,暫時停止執行。直到執行緒進入可執行( runnable )狀態,才有 機會再次獲得 cpu timeslice 轉到執行( running )狀態。阻塞的情況分三種: (一). 等待阻塞:執行( running )的執行緒執行 o . wait ()方法, JVM 會把該執行緒放 入等待佇列( waitting queue )中。 (二). 同步阻塞:執行( running )的執行緒在獲取物件的同步鎖時,若該同步鎖 被別的執行緒佔用,則 JVM 會把該執行緒放入鎖池( lock pool )中。 (三). 其他阻塞: 執行( running )的執行緒執行 Thread . sleep ( long ms )或 t . join ()方法,或者發出了 I / O 請求時, JVM 會把該執行緒置為阻塞狀態。            當 sleep ()狀態超時、 join ()等待執行緒終止或者超時、或者 I / O 處理完畢時,執行緒重新轉入可執行( runnable )狀態。 5. 死亡( dead ):執行緒 run ()、 main () 方法執行結束,或者因異常退出了 run ()方法,則該執行緒結束生命週期。死亡的執行緒不可再次復生。

相關推薦

概括解釋下線程的可用狀態

I/O 出了 處理 同步阻塞 分享圖片 tin text 不可 再次 1、新建(new):新建一個線程對象。 2、可運行狀態(runnable):線程對象創建後,其他線程調用該對象的start()方法,該狀態的線程位於可運行線程池中,等待線程調度選中,獲取CPU使用權。 3

概括解釋執行可用狀態

1. 新建( new ):新建立了一個執行緒物件。 2. 可執行( runnable ):執行緒物件建立後,其他執行緒(比如 main 執行緒)呼叫了該物件 的 start ()方法。該狀態的執行緒位於可執行執行緒池中,等待被執行緒排程選中,獲 取 cpu 的使用權 。 3

解釋執行可用狀態

(三). 其他阻塞: 執行( running )的執行緒執行 Thread . sleep ( long ms )或 t . join ()方法,或者發出了 I / O 請求時, JVM 會把該執行緒置為阻塞狀態。            當 sleep ()狀態超時、 join ()等待執行緒終止或者超時、或

啟動執行方式

一:建立執行緒的幾種方式 1.第一種方法是將類宣告為 Thread 的子類。該子類應重寫 Thread 類的 run 方法,然後在run方法裡填寫相應的邏輯程式碼。 class ThreadDemo1 extends Thread{ @O

android 終止執行方法

其實android 不提倡我們終止執行緒的,以前的一些函式,stop等等都不推薦使用了,但是當我們確實要終止執行緒的時候,可看考下面的問題 有時當一個元件或者activity被destory()的時候要求其啟動的執行緒也一起終止掉,現在就來總結了一下有這有幾種方法:

Linux執行同步的方法

Linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖、條件變數和訊號量。一、互斥鎖(mutex)   鎖機制是同一時刻只允許一個執行緒執行一個關鍵部分的程式碼。 1. 初始化鎖   int pthread_mutex_init(pthread_mutex_t *m

Linux執行同步的常見方法

Linux下提供了多種方式來處理執行緒同步,最常用的是互斥鎖、條件變數和訊號量。一、互斥鎖(mutex)  鎖機制是同一時刻只允許一個執行緒執行一個關鍵部分的程式碼。 1. 初始化鎖  int pthread_mutex_init(pthread_mutex_t *mutex

【搞定Java併發程式設計】第1篇:執行的五可用狀態

本文轉載自牛客網上一網友的回答:概括的解釋下執行緒的幾種可用狀態 第一種狀態:新建(new):新建了一個執行緒物件。例如,Thread thread = new Thread(); 第二種狀態:可執行狀態(Runnable):又叫“就緒狀態”。執行緒新建後,其他執行緒(比如main執行

VSCode的Python擴充套件程式執行方式與環境變數管理

在VSCode中編寫Python程式時,由於有些地方要使用環境變數,但是發現設定的環境變數有時不起作用,花了點時間研究了一下,過程不表,直接說結論。 首先,環境變數的設定,Python擴充套件中有三種方式: 直接設定系統環境變數,或在使用命令列啟動VSCode時臨時先設定環境變數。這種方式設定的環境變

[轉載]Java 執行 5 狀態執行中斷

[轉載]Java併發之執行緒中斷      前面的幾篇文章主要介紹了執行緒的一些最基本的概念,包括執行緒的間的衝突及其解決辦法,以及執行緒間的協作機制。本篇主要來學習下Java中對執行緒中斷機制的實現。在我們的程式中經常會有一些不達到目的不會退出的執行緒,例如:我們

基礎篇:讓執行停止執行方式(七)

這篇文章我們來討論一下終止執行緒執行的方法; 中斷執行緒的方法: public static void stopThread() throws InterruptedException{ Thread t = new Thread(new Runnable() {

Windows執行同步的實現方法

一種Windows下執行緒同步的實現方法 Windows下的多執行緒與執行緒同步概述 多工是一個作業系統可以同時執行多個程式的能力。基本上,作業系統使用一個硬體時鐘為同時執行的每個程序分配“時間片”。如果時間片足夠小,並且機器也沒有由於太多的程式而超負荷,那麼在使用者看來,所

Linux 技巧:讓進程在後臺可靠執行方法

stl 選項 con 中斷 program ng- dem 不同 正在 我們常常會碰到這種問題。用 telnet/ssh 登錄了遠程的 Linux server,執行了一些耗時較長的任務, 結果卻因為網絡的不穩定導致任務中途失敗。怎樣讓命令提交後不受本地關閉終端

Android TextView加劃線的方式

資源 pan int res line log phone findview view 如果是在資源文件裏: <resources> <string name="hello"><u>phone:0123456</u

python利用unittest進行測試用例執行方式

尋找 顯示 成員 使用方式 main down 測試的 支持 ase 利用python進行測試時,測試用例的加載方式有2種: 一種是通過unittest.main()來啟動所需測試的測試模塊; 一種是添加到testsuite集合中再加載所有的被測試對象,而test

asp.net 載文件方式

進程 Coding nco 保存 瀏覽器 bytes 一個 inf get protected void Button1_Click(object sender, EventArgs e) { /* 微軟為Response對象提供了一個新的方法TransmitFile

js中頁面加載完成後執行方式及執行順序

class 事件 兩種 在哪裏 log 等待 沒有 cti 完成 1:使用jQuery的$(function){}; 2:使用jquery的$(document).ready(function(){});前兩者本質上沒有區別,第1種是第2種的簡寫方式。兩個是document

spring4+ThreadPoolTaskExecutor建立執行方式傳送郵件

百度雲程式碼下載地址包含測試用例 :點選後跳轉 ThreadService package com.konglingfu.service; public interface ThreadService extends Runnable{ public void se

window執行同步之(Critical Sections(關鍵程式碼段、關鍵區域、臨界區域)----轉載

轉載:https://www.cnblogs.com/cyblogs/p/9948379.html    關鍵區域(CriticalSection) 臨界區是為了確保同一個程式碼片段在同一時間只能被一個執行緒訪問,與原子鎖不同的是臨界區是多條指令的鎖定,而原子

android裡TextView加劃線的方式

1.如果在xml中 <resources> <string name="hello"><u>phone:0123456</u></string> <string name="app_name">MyLink&