JAVA 執行緒的建立和一些安全問題

2021-09-01 22:29:22 字數 1502 閱讀 3484

建立執行緒的目的?

建立執行緒的目的是為了開啟一條執行路徑去執行指定的**和其他**實現同時執行,而執行的指定**就是這個執行路徑任務。一般多執行緒至少也要兩個執行緒,主線程和自定義的執行緒,主線程的任務定義在主函式中。

如何建立乙個執行緒?

就暫時我知道的四種方式來建立乙個執行緒

建立執行緒方法一:繼承thread類

步驟:1. 定義乙個類繼承thread

2. 覆蓋thread類中run方法

3. 直接建立thread的子類物件建立執行緒

4. 呼叫start方法開啟執行緒並呼叫執行緒的任務run方法執行

[img][/img]

[img]

建立執行緒方式二:實現runnable介面

1. 定義類去實現runnable介面

2. 覆蓋介面中run方法,將執行緒的任務**封裝到run方法中去

3. 通過建立thread類建立執行緒物件,並將runnable介面中的子物件作為thread類建構函式的引數進行傳遞

5. 呼叫執行緒物件的start方法開啟執行緒

[img][/img]

[img]

建立執行緒方式三:以內部類的方式來建立執行緒

[img][/img]

[img]

在程式中使用匿名內部類建立執行緒十分方便,在乙個方法呼叫中就可以啟動乙個執行緒,而且這個執行緒還可以直接呼叫類中的屬性和方法;特別注意的是,在方法中啟動匿名內部執行緒 時,如要向這個執行緒的 run 方法內傳遞引數,在建立方法中這個引數必須定義為 final 型別

建立執行緒方式四:這種凡事也是通過每部建立乙個內部類來來繼承timertask來實現的,但是這種方法是我掌握得不好。。。這個還要好好研究研究。。。。

多執行緒的一些安全問題:

比如說:有100張票,為了提高效率,我們可以用四個執行緒把這一百張票買完

下面的**

[img][/img]

[img]

這個**輸出的結果是一共賣出了四百張票,這不是我們能夠接受的結果

多執行緒安全問題產生的原因:

1.多個執行緒在操作共享的資料

2.操作共享資料的執行緒有多條,當乙個執行緒在執行操作共享資料額多條**過程中,其他執行緒參與了運算就會導致執行緒的安全問題

解決執行緒安全問題思路:

我們可以將多條操作共享資料的執行緒**封裝起來,當有執行緒在執行這些**的時候,其他執行緒不可以參與運算。必須要當前執行緒這些**都執行完了其他執行緒才能參與運算,那麼有什麼辦法可以解決這些問題呢?用同步可以解決這些問題,上述**出現這種問題是因為四個執行緒同時在執行

[img][/img]

[img]

我們可以用同步**塊的方式來解決這個問題,只需要對**坐車下面修改

[img][/img]

[img]

當然除了同步**塊的方式,還可以用同步方法的方式來解決這個問題,這兩種方法的使用方式為:

1.同步**塊:

synchronized(物件)

2.同步方法:

如:pubic synchronized int (方法名){}

單鏈表的建立和一些操作

個人建立的乙個類,實現單鏈表的基本操作,算是對資料結構知識的一點溫習.ifndef templist h define templist h include include template class node node t data,node next1 null 構造節點,指定元素和後繼結點 ...

Java多執行緒的建立和啟動

執行結果 執行結果 方式2 實現runnable,runnable作為匿名內部類 new thread new runnable start 方式3 lambda表示式建立執行緒 new thread start 執行結果 執行結果 繼承thread類和實現了runnable介面這2種方式建立執行緒...

JS建立和儲存 cookie的一些方法

在js中cookie的操作與儲存及清除cookie都與時間有關,我們只要把cookie過期時間進行有效的設定我們就可以控制它的儲存了,下面我來給大家總結一下js中cookie的一些使用技巧 建立和儲存 cookie 在這個例子中我們要建立乙個儲存訪問者名字的 cookie。當訪問者首次訪問 時,他們...