Java學習筆記 執行緒安全問題

2021-07-10 19:42:49 字數 859 閱讀 8700

1、多執行緒的實現:

(1)繼承thread類:主函式中通過建立多個subthread類物件,並呼叫其start()方法。subthread類物件中屬性資料獨佔。

(2)實現runnable介面:主函式中建立乙個runnable介面實現類物件,同時建立多個thread類物件,並傳入介面物件,通過各thread物件的start()方法進行多執行緒操作。 runnable介面實現類物件中屬性資料本身已經共享。

兩種方法均重寫run()方法【注意:不是過載*】來完成多執行緒需要完成的工作。

2、執行緒安全:

(1)同步**塊:

將操作共享資源的**塊通過synchronized (lock)進行同步;其中lock是鎖(也即同步監視器),由乙個類的物件充當(所有執行緒必須公用該鎖,所以在實現runnable方式中可以直接使用this,或者介面中定義的乙個任意屬性物件;但是在繼承方式中,必須要慎重使用this,常通過使用定義成static的全域性屬性物件充當鎖)

(2)同步方法:

將 操作共享資源的**塊 定義為乙個synchronized方法,在run()方法中呼叫該synchronized的方法,其預設的鎖是this,對於實現實現runnable介面的方式,可以保證執行緒安全;但是對於繼承實現的,不能夠保證執行緒安全

3、執行緒通訊

wait()、 notify() 、notifyall()方法,必須在synchronized的方法或者synchronized**塊中,當前執行緒獲取了鎖,立即通過notify()或notifyall()喚醒其他的等待執行緒、然後當前執行緒執行完同步**塊,通過wait()方法進入等待狀態,釋放當前占用的鎖;其他執行緒由於之前已經被喚醒,可以搶占鎖執行同步**塊。

多執行緒學習筆記(1)執行緒安全問題

什麼是執行緒安全問題?答 當多個執行緒共享同乙個全域性變數。在做寫操作的時候,可能會受到其他執行緒的干擾,導致資料有問題,這種現象叫做執行緒安全問題。多個執行緒共享同乙個區域性變數,在做寫操作的時候,不會發生執行緒安全問題 class trianthread1 implements runnable...

Java併發程式設計 執行緒安全問題

1.執行緒安全的概念 當多個執行緒訪問某乙個類 物件或方法 時,這個類始終都能表現出正確的行為,那麼這個類 物件或方法 就是執行緒安全的.synchronized 可以在任意物件或方法上加鎖,而加鎖的這段 稱為 互斥區 或 臨界區 示例 package com.thread.safety 執行緒安全...

Java多執行緒4 安全問題

這樣的執行機制就可能會導致多執行緒的安全問題 1.多個執行緒操作共享資料 2.在乙個執行緒中有多行 操作共享資料 改變共享資料 解決思路 乙個執行緒在執行執行緒任務的時候將多條操作共享資料的 一起執行,在執行過程中不允許其他執行緒執行 體現 package thread class tickets ...