1.什麼是多執行緒
多執行緒就是多個執行緒同時執行或交替執行。單核cpu的話是順序執行,也就是交替執行。多核cpu的話,因為每個cpu有自己的運算器,所以在多個cpu中可以同時執行
1.實現多執行緒的方式
(1)繼承thread類:繼承這個方法然後呼叫start方法去開啟執行緒進入等待執行狀態
(2)實現runable:實現runable介面呼叫run方法
(3)實現callable:前兩種的區別就是有返回值,前兩者是沒有返回值的,如果需要返回值則可用這種方式
(4)操作執行緒池:操作執行緒池,通過定義執行緒池裡的執行緒數量來操作,執行緒池的作用是重複利用,節省建立執行緒的時間,節省記憶體空間
2.用執行緒池的優點
1)避免執行緒的建立和銷毀帶來的效能開銷。
2)避免大量的執行緒間因互相搶占系統資源導致的阻塞現象。
3}能夠對執行緒進行簡單的管理並提供定時執行、間隔執行等功能。
3.thread的常用api
(1)start():啟動當前執行緒,呼叫當前執行緒的run方法(實際就是呼叫native方法)
(2)run():通常需要重寫thread類中的run方法,用於執行業務邏輯
(3)currentthread():返回執行當前**的執行緒
(4)getname():獲取當前執行緒的名稱
(5)setname():設定當前執行緒的名稱
(6)join:等待執行緒結束
(7)sleep:執行緒休眠
①經常問到的問題就是sleep和wait區別:sleep() 方法是執行緒類(thread)的靜態方法,讓呼叫執行緒進入睡眠狀態,讓出執行機會給其他執行緒,等到休眠時間結束後,執行緒進入就緒狀態和其他執行緒一起競爭cpu的執行時間。 因為sleep() 是static靜態的方法,他不能改變物件的機鎖,當乙個synchronized塊中呼叫了sleep() 方法,執行緒雖然進入休眠,但是物件的機鎖沒有被釋放,其他執行緒依然無法訪問這個物件。
②wait()是object類的方法,當乙個執行緒執行到wait方法時,它就進入到乙個和該物件相關的等待池,同時釋放物件的機鎖,使得其他執行緒能夠訪問,可以通過notify,notifyall方法來喚醒等待的執行緒
多執行緒面試總結
作業系統的設計,因此可以歸結為三點 1 以多程序形式,允許多個任務同時執行 2 以多執行緒形式,允許單個任務分成不同的部分執行 3 提供協調機制,一方面防止程序之間和執行緒之間產生衝突,另一方面允許程序之間和執行緒之間共享資源。2.執行緒與程序的區別?程式 完成某種功能的一段 靜態概念。任務 程式完...
面試 多執行緒基礎
作業系統中有若干程序併發執行,它們不斷申請 使用 釋放系統資源,雖然系統的程序協調 通訊機構會對它們進行控制,但也可能出現若干程序都相互等待對方釋放資源才能繼續執行,否則就阻塞的情況。此時,若不借助外界因素,誰也不能釋放資源,誰也不能解除阻塞狀態。根據這樣的情況,作業系統中的死鎖被定義為系統中兩個或...
多執行緒基礎總結
實現 繼承thread 實現runable 2 啟動 thread.start 執行緒的建立涉及作業系統的操作,因此是本地方法。啟動執行緒的run方法將被執行。常用方法 休眠 thread.sleep long millis 讓步 thread.yield 目的是讓相同優先順序的執行緒之間能適當的輪...