05 多執行緒的建立

2021-10-09 22:32:05 字數 2900 閱讀 2841

多執行緒

重難點執行緒的建立 4中方法 執行緒同步(執行緒安全,鎖)3種方法

記憶體結構圖:

類載入器把class檔案載入進來

資料載入到記憶體中

方法區和堆是乙個程序乙份,程序的執行緒共享方法區和堆。資源共享帶來安全隱患。虛擬機器棧和程式計數器是乙個執行緒乙份,

cpu的核數從作業系統來看,看到的是物理核數的2倍。

方式一 繼承thread類

package com.shangguigu;

/** * 多執行緒建立,方式一:繼承thread類

* 1. 建立乙個子類繼承於thread類

* 2. 子類裡面重寫run()方法,用於執行我們需要的功能

* 3. 建立thread子類的物件

* 4. 通過此物件呼叫start()

* 例子:遍歷100以內的偶數---寫在run方法裡面

* @author wangshengnan

* @create 2020-10-02-11:02

*/public class threadtest

}}class mythread extends thread}}

}

執行結果部分截圖:正如結果所示,啟動分執行緒之後主線程和分執行緒併發執行。

練習

package com.shangguigu.practice;

/** * 多執行緒練習題: 建立兩個分執行緒,乙個遍歷100以內的偶數,乙個遍歷100以內的奇數

* 方法一 建立兩個thread的子類 thread1 thread2比較麻煩

* 方法二 建立匿名子類,適用子類只用一次之後不再使用

* @author wangshengnan

* @create 2020-10-02-11:54

*/public class threadprac }}

}.start();

new thread()}}

}.start();

}}class thread1 extends thread}}

}class thread2 extends thread}}

}

關於thread類的常用方法

package com.shangguigu;

/** * thread類的常用方法

* 1. start()方法 用於啟動分執行緒,並呼叫當前執行緒的run方法

* 2. run() 通常許需要重寫thread類中的此方法,將建立的執行緒要執行的曹祖宣告在此方法中

* 3. currentthread() 是靜態方法,返回執行當前**的執行緒

* 4. getname() 返回當前執行緒的名字

* 5. setname() 設定當前執行緒的名字

* 6. yield() 釋放此執行緒當前cpu的執行權,當然釋放完之後cpu會調配執行緒,這個執行緒有可能再次搶到cpu的執行權。

* 8. sleep(long millitime) 毫秒 1s = 1000mills,這裡是執行緒進入阻塞狀態,阻塞mills時間後等待cpu分配資源,分配到再執行

* 9. isalive()

* @author wangshengnan

* @create 2020-10-02-12:15

*/public class threadmethodtest

}if(i == 20) catch (interruptedexception e)

}thread1.isalive(); //這裡肯定是false 因為 上面的**thread1已經執行完成了}}

}class thread1 extends thread catch (interruptedexception e)

system.out.println(thread.currentthread().getname()+":"+i);

}if(i % 20 == 0)}}

//方法二使用建構函式給執行緒名字,前提是thread類裡面是有給名字賦值的建構函式

public thread1(string name)

}

join()方法,意思就是紅色執行緒不再執行,等待藍色執行緒執行完成之後再去執行紅色執行緒。

執行緒排程

優先順序max_priority:10

min_priority:1

norm_priority: 5 預設的優先順序

優先順序的設定

setpriority(int p)

thread.currentthread().setpriority();

getpriority()

優先順序高的搶占低優先順序的,只是從概率上講,高優先順序搶占的概率更高,但是不一定就是高優先順序比低優先順序的先執行。

方式二 實現runnable介面方式

靜態變數是共享資源,

多執行緒05 執行緒同步

1 執行緒同步 2 執行緒不安全案例 public class testthreadsynchronized class ticketwindow implements runnable private void buy try catch interruptedexception e system...

多執行緒學習05 執行緒狀態

控制線程的狀態 啟動執行緒 void start 進入就緒狀態 執行狀態.當執行緒任務執行完畢,自動進入死亡狀態。阻塞 暫停 執行緒 void sleepuntildate nsdate date void sleepfortimeinterval nstimeinterval ti 進入阻塞狀態 ...

Python高階 多執行緒 05 執行緒

併發 時間段內多個程式輪流執行 並行 同乙個時刻不同cpu同時執行 執行緒 程式執行中,執行 的乙個分支。每個執行至少都有乙個執行緒.執行緒是作業系統排程資源的基礎單位 1.建立 import threading 方法 thread group 執行緒組,目前只能使用none target 執行的目...