在同乙個類中,有兩個方法都用 synchronized 修飾,這兩個方法是執行緒安全的嗎?

發布 科技 2024-03-01
4個回答
  1. 匿名使用者2024-01-26

    這就看你如何定義這兩個方法了,有方法a、b,a是例項方法,b是靜態方法,前者你加了synchronized關鍵字,那麼你同步的其實只是呼叫這個方法的物件,所以無論如何都不會發生執行緒安全問題,除非物件同時被多次呼叫, 如果在方法 b 中加入 synchronized 關鍵字,則表示同步了 static 方法所在的類,這樣如果想在同一時間段內在多個地方呼叫該方法,肯定會產生同步效果,因為在整個虛擬機器中,這個類只有乙個二進位編碼, 在多執行緒中,它就是所謂的關鍵資源,每個人都想使用它,但又不想出現莫名其妙的資料錯誤,那麼我必須同步。至於方法a,就像我之前說的,如果這個物件同時被多次呼叫,那麼這個物件其實就是乙個關鍵資源,很多人都想用它,那麼你就排隊了,只有這樣才會發生同步效果。

    如果你的 A 和 B 方法涉及到同乙個屬性的操作,那麼為了避免死鎖,可以將 synchronized 關鍵字和 wait()、notify() 方法一起使用,如果邏輯關係處理得當,你仍然可以按照自己的想象流程製作資料,對於初學者來說,邏輯控制比較麻煩, 當我第一次在這裡學習時,總會有邏輯錯誤導致程式無休止地迴圈。

  2. 匿名使用者2024-01-25

    不可以,物件的同步方法只能由乙個執行緒訪問。 無法輸入物件的同步方法,但仍可以訪問其其他非同步方法。

    有兩種方法可以實現多執行緒,一種是繼承執行緒類,另一種是實現可執行的介面。

    有兩種型別的同步實現,即同步、等待和通知。

    wait():將執行緒置於等待狀態並釋放它所持有的物件的鎖。

    sleep():將正在執行的執行緒置於休眠狀態,是乙個靜態方法,用於捕獲 InterruptedException 異常。

    notify():喚醒處於等待狀態的執行緒,請注意,當呼叫此方法時,它不會完全喚醒處於等待狀態的執行緒,而是 JVM 決定喚醒哪個執行緒,而不是按優先順序。

    allnotity():喚醒所有處於等待狀態的執行緒,請注意,不是讓所有喚醒的執行緒都鎖定在物件上,而是允許它們競爭。

  3. 匿名使用者2024-01-24

    有幾種情況:

    1.是否先新增同步關鍵字,如果未新增,則可以。

    2.如果在此方法中內部呼叫 wait,則可以進入其他同步方法。

    3.如果所有其他方法都追加了 synchronized 關鍵字,並且沒有要等待的內部呼叫,則不能。

    4.如果另乙個方法是靜態的,則它使用同步鎖,該同步鎖是當前類的位元組碼,並且不能與非靜態方法同步,因為非靜態方法使用此方法。

  4. 匿名使用者2024-01-23

    當執行緒進入乙個物件的同步方法時,它會獲得對該物件的鎖,即它占有該物件。

    其他執行緒無法訪問此物件的其他同步方法和方法塊。 但是,如果物件未同步,則其他物件可以訪問該物件。

相關回答
11個回答2024-03-01

開啟兩台計算機的來賓使用者,將要共享的檔案直接放入共享資料夾中。

16個回答2024-03-01

⊙o⊙)…我真的不知道該怎麼處理房東的問題: >>>More

9個回答2024-03-01

無線網路速度慢的原因有很多。

1.有人揉了網路,你在瀏覽器欄輸入它,然後開啟預設的使用者名稱和密碼是admin,點選確認開啟無線路由確認介面,然後無線設定-主機狀態,這裡可以看到連線到無線的主機數量,如果你發現乙個異常的主機,那麼你就是在揉網路, 建議您在此處輸入無線埋藏安全設定以修改無線密碼。 >>>More

14個回答2024-03-01

不,wifi 有專用核心。

11個回答2024-03-01

如何消除呼叫波束擾動,記錄與李琦橡膠跡線ID同步?