Java執行緒(二)

2021-06-22 01:48:13 字數 888 閱讀 8435

昨天我們認識了什麼是執行緒和實現他的兩種方式,今天我們再進一步了解。執行緒的狀態轉換是執行緒控制的基礎。執行緒狀態總的可分為五大狀態:分別是生、死、可執行、執行、等待/阻塞。如下圖:

上圖能夠清晰的看出執行緒見得狀態是如何轉換的,並且標註了在不同的狀態執行緒對cpu的資源使用情況。(其中對執行緒操作的方法,讀者可去查閱jdk api文件。)

有兩種方式:第一種是利用synchronized同步**塊,格式為 

synchronized(物件)
其中物件為鎖物件,乙個執行緒在持有鎖標記時才能進入同步**區,在執行完後,釋放該鎖標記;第二種是利用了synchronized的同步函式,格式為:

如:

public synchronized void run(){}
它對訪問當前的物件(this)加鎖,

哪個執行緒能拿到該物件(臨界資源)的鎖,哪個執行緒就能呼叫該物件(臨界資源)的同步方法。

比如下面的簡單售票系統:

/*

* 問題描述:有一百張票,有四個售票點在同時售票,售完為止

* 利用了synchronized同步**塊去解決同步問題

*/public class demo_3

}class tickets implements runnable catch (interruptedexception e)

system.out.println(thread.currentthread().getname() + "..."

+ count--);}}

} }}

java 執行緒 二

執行緒的同步和通訊是乙個重點。很多書上講解執行緒之間的同步時,都使用了乙個售票系統。public class threaddemo2 implements runnable catch interruptedexception e system.out.println 售出第 i 張票 thread...

Java執行緒(二)

今天重新整理關於concurrent包的使用。lock 介面,提供了synchronized的功能,同時額外增加複雜性,處理複雜問題的能力,因為在synchronized的時候,可以順序的獲取多個鎖,同時也需要倒序的釋放這些鎖,碰到一些情況這個就不能滿足了,這時候lock就可以,它實現了鎖在不同作用...

Java 多執行緒 二

執行緒安全問題 引出同步 塊 通過下面的例子,了解傳統多執行緒存在的執行緒安全隱患。需求 買票 四個視窗同時買票。class ticket implements runnable extends thread catch exception e system.out.println thread.c...