《Java多線程編程核心技術》讀后感(十五)

?

?

線程的狀態

線程對象在不同的運行時期有不同的狀態,狀態信息就存在與State枚舉類中。

驗證New,Runnable,Terminated

new:線程實例化后還從未執行start()方法時的狀態

runnable:線程進入運行的狀態

terminated:線程被銷毀時的狀態

package Seven;public class MyThread extends Thread {public MyThread() {System.out.println("構造方法中的狀態:" + Thread.currentThread().getState());}@Overridepublic void run() {System.out.println("run方法中的狀態:" + Thread.currentThread().getState());}
}
package Seven;public class Run {// NEW,// RUNNABLE,// TERMINATED,// BLOCKED,// WAITING,// TIMED_WAITING,public static void main(String[] args) {try {MyThread t = new MyThread();System.out.println("main方法中的狀態1:" + t.getState());Thread.sleep(1000);t.start();Thread.sleep(1000);System.out.println("main方法中的狀態2:" + t.getState());} catch (InterruptedException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}}

注意:構造方法中的日志時main主線程的

驗證Time_waiting

Time_waiting:線程執行了Thread.sleep()

package Seven;public class MyThread extends Thread {@Overridepublic void run() {try {System.out.println("begin sleep");Thread.sleep(10000);System.out.println("  end sleep");} catch (InterruptedException e) {e.printStackTrace();}}
}
package Seven;public class Run {// NEW,// RUNNABLE,// TERMINATED,// BLOCKED,// WAITING,// TIMED_WAITING,public static void main(String[] args) {try {MyThread t = new MyThread();t.start();Thread.sleep(1000);System.out.println("main方法中的狀態:" + t.getState());} catch (InterruptedException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}
}

?

?驗證Blocked

blocked:出現在某一個線程等待鎖的時候

package Seven;public class MyService {synchronized static public void serviceMethod() {try {System.out.println(Thread.currentThread().getName() + "進入了業務方法!");Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}}}
package Seven;public class MyThread1 extends Thread {@Overridepublic void run() {MyService.serviceMethod();}}
package Seven;public class MyThread2 extends Thread {@Overridepublic void run() {MyService.serviceMethod();}}
package Seven;public class Run {// NEW,// RUNNABLE,// TERMINATED,// BLOCKED,// WAITING,// TIMED_WAITING,public static void main(String[] args) throws InterruptedException {MyThread1 t1 = new MyThread1();t1.setName("a");t1.start();MyThread2 t2 = new MyThread2();t2.setName("b");t2.start();//Thread.sleep(1000);System.out.println("main方法中的t2狀態:" + t2.getState());}
}

驗證waiting

waiting:是線程執行了object.wait()方法后所處的狀態

package Seven;public class Lock {public static final Byte lock = new Byte("0");}
package Seven;public class MyThread extends Thread {@Overridepublic void run() {try {synchronized (Lock.lock) {Lock.lock.wait();}} catch (InterruptedException e) {e.printStackTrace();}}
}
package Seven;public class Run {// NEW,// RUNNABLE,// TERMINATED,// BLOCKED,// WAITING,// TIMED_WAITING,public static void main(String[] args) {try {MyThread t = new MyThread();t.start();Thread.sleep(1000);System.out.println("main方法中的t狀態:" + t.getState());} catch (InterruptedException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}
}

?

轉載于:https://www.cnblogs.com/Michael2397/p/7860193.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281845.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281845.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281845.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

隊列(queue)

隊列(queue)和棧一樣支持push和pop兩個操作。但與棧不同的是,pop兩個操作。但與棧的不同的是,pop完成的不是取出最頂端的元素,而是最底端的元素。也就是說最初放入的元素能夠最先被取出(這種行為被叫做FIFO:First In First Out,即…

一題多解,ASP.NET Core應用啟動初始化的N種方案[上篇]

ASP.NET Core應用本質上就是一個由中間件構成的管道,承載系統將應用承載于一個托管進程中運行起來,其核心任務就是將這個管道構建起來。在ASP.NET Core的發展歷史上先后出現了三種應用承載的編程方式,而且后一種編程模式都提供了針對之前編程…

java程序猿面試問缺點怎么回答_JAVA程序員面試32問,你能回答多少題

第一,談談final, finally, finalize的區別。第二,Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?第三,Static Nested Class 和 In…

ExecutorService——shutdown方法和awaitTermination方法

ExecutorService的關閉shutdown和awaitTermination為接口ExecutorService定義的兩個方法,一般情況配合使用來關閉線程池。 方法簡介shutdown方法:平滑的關閉ExecutorService,當此方法被調用時,ExecutorService停止接收新的任務并且…

WPF 簡單模仿 VSCode 界面布局

WPF 簡單模仿 VSCode 界面布局本文經原作者授權以原創方式二次分享,歡迎轉載、分享。WPF 簡單模仿 VSCode 界面布局作者:弈虎-呂女士會翻墻原文鏈接: https://github.com/Chen-Lin-Zhao-Wei/WPFLikeVSCode分享一篇群友這幾天自己寫的 WPF 簡…

compare()方法+使用compare方法

compare()方法 compare(lob1,lob2,amount,offset_1,offset_2) 1用于比較2個lob存儲的數據,比較的方式是從指定偏移量開始,對指定數量的字符或者字節進行比較。 2如果比較內容相同,返回0,否則返回-1或1. 3如果參數設置有誤或不合…

linux 下 mysql默認表_linux環境下mysql默認是區分表名大小寫的

在linux環境下,mysql默認表明是區分大小寫的,我們可以查看全局變量發現:mysql> show variables like lower%;-------------------------------| Variable_name | Value |-------------------------------| lower_case_file_system | OFF || lower_cas…

dot-- 資源匯總

http://graphviz.org/doc/info/attrs.htmlhttp://graphs.grevian.org/http://graphs.grevian.org/examplehttp://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html轉載于:https://www.cnblogs.com/itzxy/p/7860276.html

兩將軍問題和TCP三次握手

兩將軍問題,又被稱為兩將軍悖論、兩軍問題, 是一個經典的計算機思想實驗。首先, 為避免混淆,我們需要認識到兩將軍問題雖然與拜占庭將軍問題相關,但兩者不是一個東西。拜占庭將軍問題是一個更通用的兩將軍問題版本&…

微信小程序開發系列五:微信小程序中如何響應用戶輸入事件

2019獨角獸企業重金招聘Python工程師標準>>> 微信小程序開發系列教程 微信小程序開發系列一:微信小程序的申請和開發環境的搭建 微信小程序開發系列二:微信小程序的視圖設計 微信小程序開發系列三:微信小程序的調試方法 微信小程序…

理解Object.defineProperty的作用

Object.defineProperty 是vue中雙向綁定的基礎。vue是通過數據劫持的方式來做數據綁定的,最核心的方法是通過 Object.defineProperty()方法來實現對屬性的劫持,達到能監聽到數據的變動。要實現數據的雙向綁定, 當使用存取器描述屬性的特性的時…

java.lang包有哪些類_Java中Lang包的工具類有哪些

Java中Lang包的工具類有哪些發布時間:2020-12-08 16:15:36來源:億速云閱讀:76作者:Leah今天就跟大家聊聊有關Java中Lang包的工具類有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總…

直播修仙:使用.NET 的 WebView2 如何獲取請求的響應內容,以微信直播的互動直播為例...

背景近幾年直播行業快速發展,門檻也越來越低,越來越的人涌入直播大軍。不得不說,直播不僅帶來了更多的娛樂消遣,還提供了一個新型的就業方式。說起直播的類型,有一個非常小眾的娛樂直播,沒有主播&#xff0…

2017年我的閱讀書單

2017年我正在看或者已經看完的書單,基本上都是紙質書,主要是長時間閱讀也不傷眼。由于現階段的主要工作是 DevOps 和運維管理,所以涉及運維方面的書我沒有再細看,如果是工作用到的話會稍為翻閱下。主要還是看運維開發和 Python 及…

web第6次作業position

position 屬性指定了元素的定位類型。 position 屬性的五個值: static (靜態定位) HTML元素的默認值,即沒有定位,元素出現在正常的流中。 靜態定位的元素不會受到 top, bottom, left, right影響。 div.stati…

GeneralUpdate版本更新公告20221009

大家好我是juster,GeneralUpdate的開源項目作者。這次將發布GeneralUpdate兼容.NET MAUI和多平臺為核心的版本。經過國慶假期的打磨修復了大量開源社區開發者的提交的bug和不合理修改建議,重構、刪除了大量代碼和結構使用和上一個版本沒有太大變化。1.更…

實驗2 java_《Java程序設計》實驗2

1、使用java語言編程,從鍵盤輸入N個整數存儲到數組中,求數組所有元素的和、最大值和平均值。import java.util.Scanner;public class Program01{public static void main(String [] args){Scanner scanner new Scanner(System.in);System.out.println(&…

WPF遍歷當前容器中某種控件的方法

原文:WPF遍歷當前容器中某種控件的方法版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/m0_37591671/article/details/79528845 WPF遍歷當前容器中某種控件的方法 WPF遍歷當前容器中某種控件的方法1.目的:2.實現思…

gradle 轉 maven

1. 預備 1.1. java 環境 驗證 java -version   1.2. gradle 安裝, 參考, 這里列舉下windows下的安裝 b.1 下載包:https://gradle.org/releases b.2 解壓,例如放到D:\soft\gradle\gradle-3.5 b.3 添加到環境變量, 把D…

詳細的DedeCMS(織夢)目錄權限安全設置教程

一、目錄權限根據統計,絕大部分網站的攻擊都在根目錄開始的,因此,欄目目錄不能設置在根目錄。DEDECMS部署完成后,重點目錄設置如下:1)將install刪除。2) data、templets、uploads、a或html目錄,…