JDK併發包溫故知新系列(三)—— 執行緒的中斷
RUNNABLE狀態-執行緒呼叫了start()方法,處於等待系統排程或在執行中
這種情況下只設置中斷標誌位。
WAITING/TIMED_WAITING-等待狀態
當呼叫如下方法時進入等待狀態,包括的方法有:
WATING:呼叫了鎖資源的wait方法,或呼叫了join方法。
TIMED_WAITING:wait(long timeout),sleep(long millis),join(long millis)。(wait與sleep的區別:是否釋放鎖)。
丟擲InterruptedException異常並且執行緒中斷標誌位被清空,針對此一般一般是交由上級處理,若希望執行緒中斷,在catch裡面執行清理工作或重設執行緒標誌位。
BLOCKED-執行緒處於鎖等待佇列,試圖進入同步塊
只設置標誌位。
NEW/TERMINATED-執行緒結束了或還未呼叫start()方法
不會有任何效果。
注意
不是說呼叫了interrupt()方法,執行緒就終止了,需要執行緒實現者通過程式碼實現,如下:
while (!Thread.currentThread().isInterrupted()) {
//清
相關推薦
JDK併發包溫故知新系列(三)—— 執行緒的中斷
RUNNABLE狀態-執行緒呼叫了start()方法,處於等待系統排程或在執行中 這種情況下只設置中斷標誌位。 WAITING/TIMED_WAITING-等待狀態 當呼叫如下方法時進入等待狀態,包括的方法有: WATING:呼叫了鎖資源的wait方法,或呼叫了join方法。 TIMED_WAITING:w
JDK併發包溫故知新系列(四)—— CAS原理與JDK8的優化
public final int incrementAndGet() { for (;;) { int current = get(); int next = current + 1; if (compareAndSet(current, next))
JDK併發包溫故知新系列(五)—— 顯式鎖與顯式條件
ReentrantReadWriteLock 兩把鎖共享一個等待佇列,兩把鎖的狀態都由一個原子變量表示,特有的獲取鎖和釋放鎖邏輯。 ReentrantReadWriteLock的基本原理: 讀鎖的獲取,只要求寫鎖沒有被執行緒持有就可以獲取,檢查等待佇列,逐個喚醒等待讀鎖執行緒,遇到等待寫鎖執行緒則停止.
深入理解Java併發框架AQS系列(三):獨佔鎖(Exclusive Lock)
[深入理解Java併發框架AQS系列(一):執行緒](https://www.cnblogs.com/xijiu/p/14396061.html) [深入理解Java併發框架AQS系列(二):AQS框架簡介及鎖概念](https://www.cnblogs.com/xijiu/p/14522224.html)
併發系列(五)-----執行緒
一 簡介執行緒這個話題,不管是在面試中還是在工作中會經常的遇見。而併發程式設計的目的就是為了在儘量不影響程式的執行效率的情況下保證資料的安全性和正確性。要想理解執行緒首先要明白一些概念性的東西。 程序:具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位. 執
java 執行緒 (三)執行緒併發的安全性 同步程式碼塊
package cn.sasa.demo1; import java.util.concurrent.ExecutionException; public class ThreadDemo { public static void main(String[] args) th
Muduo網路庫原始碼分析(三)執行緒間使用eventfd通訊和EventLoop::runInLoop系列函式
先說第一點,執行緒(程序)間通訊有很多種方式(pipe,socketpair),為什麼這裡選擇eventfd? eventfd 是一個比 pipe 更高效的執行緒間事件通知機制,一方面它比 pipe
Java併發程式設計——執行緒池的使用(三)執行緒池執行任務、取消任務
一、執行緒池執行Runnable任務 executor.execute(runnable) executor.execute(new Runnable() { @Override public void run(
併發系列(一)——執行緒池原始碼(ThreadPoolExecutor類)簡析
前言 本文主要是結合原始碼去執行緒池執行任務的過程,基於JDK 11,整個過程基本與JDK 8相同。 個人水平有限,文中若有表達有誤的,歡迎大夥留言指出,謝謝了! 一、執行緒池簡介 1.1 使用執行緒池的優點 1)通過複用已建立的執行緒,降低資源的消耗(執行緒的建立/銷燬是要消耗資源的)、
Java筆試題(三)——執行緒安全、String、StringBuffer、StringBuilder
1.什麼是執行緒安全? 簡單地說法:執行緒安全可以簡單理解為一個方法或者一個例項可以在多執行緒環境中使用而不會出現問題。 複雜的說法:當多個執行緒訪問同一個物件時,如果不用考慮這些執行緒在執行時環境下的排程和交替執行,也不需要進行額外的同步,或者在呼叫方進行任何其他的協調操作,呼叫這個物件的
程序與執行緒(三)——執行緒的概念與實現
一 什麼是執行緒? 程序中的一條執行流程。 有了執行緒,程序發生了一系列的變化。首先是(1)資源管理,包括地址空間(程式碼段,資料段):程序就是由來管理資源的:地址空間,開啟的檔案,訪問的網路。(2)執行緒把程序的另一部分功能給拆出來了。 程序的執行功能,程序的
(三)執行緒傳參詳解,detach()大坑,成員函式做執行緒函式
陷阱1:子執行緒傳遞引數避免使用指標 先來看一段程式碼: 程式碼乍一看好像沒有什麼問題,執行有時也能成功,但是卻隱含了一個很大的bug。 通過除錯:變數i的地址:0x0076e384 {1},變數mvar和mvary的地址:0x003bfe40 {1},可以看
Java 多執行緒(三)—— 執行緒的生命週期及方法
這篇部落格介紹執行緒的生命週期。 執行緒是一個動態執行的過程,它也有從建立到死亡的過程。 執行緒的幾種狀態 在 Thread 類中,有一個列舉內部類: 上面的資訊以圖片表示如下: 第一張圖: 第二張圖:把等待、計時等待、阻塞看成阻塞一個狀態了 1、新建狀態(ne
執行緒管理(三)執行緒的中斷
宣告:本文是《 Java 7 Concurrency Cookbook 》的第一章, 作者: Javier Fernández González 譯者:鄭玉婷 校對:歐振聰 執行緒的中斷 一個多個執行緒在執行的Java程式,只有當其全部的執行緒執行結束時(更具體的說,是所有非守護執行緒結束或者
C++多執行緒系列(二)執行緒互斥
首先了解一下執行緒互斥的概念,執行緒互斥說白了就是在程序中多個執行緒的相互制約,如執行緒A未執行完畢,其他執行緒就需要等待! 執行緒之間的制約關係分為間接相互制約和直接相互制約。 所謂間接相互制約:一個系統中的多個執行緒必然要共享某種系統資源如共享CPU,共享印表機。間接制
Linux多執行緒(三)執行緒清理函式
#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>void *clean_up(void *arg){ char *s= (char *)arg; pr
java併發程式設計的藝術(五)-----執行緒狀態
執行緒與程序? 執行緒是作業系統排程的最小單元,而程序是系統進行資源分配和排程的一個基本單位。 簡單理解:程序是程式的一次執行,執行緒可以理解為程序中的執行的一段程式片段 360解釋:程序是一個具有獨立功能的程式關於某個資料集合的一次執行活動。它可以申請和
[Java 多執行緒技術](三)執行緒的建立和啟動
本篇部落格根據《瘋狂java講義》和《java多執行緒程式設計核心技術》整理的筆記 Java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread類或子類的例項,每個執行緒的作用是完成一定的任務,實際上就是執行一段程式流(一段順序執行的
jdk 1.7系列(三)處理目錄和目錄樹
需要 err visitor XML 只需要 重寫 img ide col DirectoryStream<T> 接口 java.nio.file.DirectoryStream<T>接口和它的實現類提供的功能: 循環遍歷目錄中的子項,比如查找目錄