執行緒基本原理

2021-10-07 05:07:05 字數 2113 閱讀 7258

1、每個執行緒都會建立自己的棧空間,執行自己的run方法。

2、執行緒同步

執行緒安全問題都是由全域性變數及靜態變數引起的。若每個執行緒對全域性變數、靜態變數只有讀操作,而無寫操作,那麼這個全域性變數是執行緒安全的。若多個執行緒同時執行寫操作,一般需要考慮執行緒同步,否則影響執行緒安全。

資料同步的三個方法:

①同步**塊

格式:鎖的物件可以是任意型別,多個執行緒物件要使用同一把鎖。

object lock=new object();

synchronized(lock)

②同步方法

格式:

public synchronized void method
③鎖機制(lock鎖,比同步方法和同步**塊功能更強大)

格式:

lock lock = new reentrantlock();

lock.lock();

...lock.unlock();

例子:

public static void main(string args) 

private static class myrunnable implements runnable catch (exception e)

string name = thread.currentthread().getname();

system.out.println("==="+name+" "+(ticket--));}}

}*/// sellticket();

while (true) catch (exception e)

string name = thread.currentthread().getname();

system.out.println("==="+name+" "+(ticket--));

}lock.unlock();}}

private synchronized void sellticket() catch (exception e)

string name = thread.currentthread().getname();

system.out.println("==="+name+" "+(ticket--));}}

}}

3、sleep和wait

①thread.sleep(100);//不會釋放鎖資源,直到waittingtime到達後繼續執行執行緒體。

②object.wait()方法,主要用於執行緒協作的情況,他會釋放鎖資源。

注意:wait()和notify()必須由同乙個鎖物件呼叫,對應的鎖物件可以通過notify喚醒使用同乙個鎖物件呼叫的wait()方法後的執行緒。wait()和notify()必須在同步**塊或者同步函式中使用。因為必須通過鎖物件呼叫者2個方法。

當多個執行緒協作時,比如a、b執行緒,如果a執行緒在runnable(可執行)狀態中呼叫了wait()方法,那麼a執行緒就進入了waiting(無限等待)狀態,同時失去了同步鎖。假如這個時候b執行緒獲取到了同步鎖,在執行狀態中呼叫了notify()方法,那麼就會將無限等待的a執行緒喚醒,如果a獲得鎖物件,那麼a執行緒就會進入runnable狀態,如果沒有獲得鎖物件,那麼就進入到blocked(鎖阻塞狀態)。

例如:

private static object obj = new object();

private static thread thread1 = new thread() catch (interruptedexception e)

string name = thread.currentthread().getname();

system.out.println("===" + name);}}

}};private static thread thread2 = new thread() catch (exception e) }}

}};

c 執行緒庫基本原理

思路 1 初始化執行緒 2 執行緒上鎖 然後解除鎖的占用 等待訊號通知 3 某個執行緒被通知到後 獲取鎖 鎖獲取後取任務隊裡第乙個任務函式 解除鎖 執行任務 繼續第二步操作 關鍵點 訊號通知函式 notify one 只會通知等待區中的乙個,讓其來獲取鎖,避免驚群事件。該執行緒池只支援空值返回的任意...

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

8 2 1 基本原理

乙個舞台動畫物件在包含許多舞台資訊 出現在何處,佔多大面積,處在什麼角度,是否可見 這些資訊分別儲存在動畫物件的屬性中。在 中讀取這些屬性可以了解物件的位置 大小 角度等狀態資訊 修改這些屬性可以改變物件的位置 大小 角度等狀態。如果從資料的角度去理解,動畫就是在固定時間間隔點不斷修改動畫物件某項屬...