多執行緒問題及其解決方法

2021-09-29 14:32:07 字數 1166 閱讀 5538

程序:就是乙個應用程式。

執行緒:cup的切換執行線

使用者執行緒,沒有做其它操作,就是直接建立的執行緒。

守護執行緒,可以對執行緒new thread().setdaemon(true);當主線程執行完成後,守護執行緒也立即結束。

-- 主線程就是程式在執行的標緻,當主線程結束,就是程式結束,程式結束所有的執行緒都可以停止。

多執行緒:有多個執行緒操作共享資料。

怎麼解決執行緒安全問題!!!

同步**塊(synchronized),同步方法(synchronized),lock鎖

本源都是鎖機制!!

可能會有死鎖問題:解決辦法,死鎖不能解決,只能避免出現死鎖。

怎麼不出死鎖?不要在鎖裡面再加鎖。

狀態:1.建立,沒有呼叫start。

2.呼叫了start.就可以開始執行執行緒了。就有兩個情況:有cup的執行權,和沒有執行權。

3.sleep - 睡一會兒,有定時的,定時阻塞。

4.wait - 等一會兒,沒有定時的,等別通知可以不等了,就繼續執行。

5.可以執行,但是沒有鎖許可權(沒有鑰匙)

6.執行緒執行完,執行緒結束死亡。

wait與sleep區別

- 對於sleep()方法,首先要知道該方法是屬於thread類中的。而wait()方法,則是屬於object類中的。

- sleep()方法導致了程式暫停執行指定的時間,讓出cpu該其他執行緒,但是他的監控狀態依然保持者,當指定的時間到了又會自動恢復執行狀態。

wait()是把控制權交出去,然後進入等待此物件的等待鎖定池處於等待狀態,只有針對此物件呼叫notify()方法後本執行緒才進入物件鎖定池準備獲取物件鎖進入執行狀態。

- 在呼叫sleep()方法的過程中,執行緒不會釋放物件鎖。而當呼叫wait()方法的時候,執行緒會放棄物件鎖。

結束執行緒:1.執行緒執行完成,就結束。2.使用interrupt()方法中斷執行緒。3.stop方法。

使用interrupt:當前執行緒在等待,別的執行緒不想讓這個執行緒繼續等下去,就把它給關了。

想讓乙個執行緒優先執行!!

優先順序priority 1 -10 越大,優先順序越高。

abc.join():搶當前執行緒的執行權,先執行abc執行緒,再執行當前執行緒。

abc.yield():讓出一次cpu的執行權。

多執行緒特性:1.原子性。2.可見性。3.有序性。

常見系統問題及其解決方法

一 宕機問題 什麼是宕機 指在正常使用計算機過程中,顯示畫面定格,滑鼠沒有反應,鍵盤沒有反應。按滑鼠按鈕或者鍵盤按鍵並鬆開後,大約30秒以上沒有反應。宕機原因 1 軟體死鎖 軟體bug引起軟體執行時發生死鎖或者多個軟體之間爭用資源引起執行中的死鎖 在配置低的機器上執行大型軟體,常常會發生宕機 軟體與...

Php路徑問題及其解決方法

初學php的時候,我們經常被php的絕對路徑和相對路徑弄的暈頭轉向。路徑問題經常導致include及require命令不能載入到指定的頁 面,從而導致web程式執行錯誤。本文將跟大家一起 一下php路徑問題的常用解決方案。下面我們先做乙個個簡單的示例 上圖是乙個簡單web專案的結構圖,其中各檔案的 ...

Php路徑問題及其解決方法

初學php的時候,我們經常被php的絕對路徑和相對路徑弄的暈頭轉向。路徑問題經常導致include及require命令不能載入到指定的頁面,從而導致web程式執行錯誤。本文將跟大家一起 一下php路徑問題的常用解決方案。下面我們先做乙個個簡單的示例 root index.php blog new b...