-
這就看你如何定義這兩個方法了,有方法a、b,a是例項方法,b是靜態方法,前者你加了synchronized關鍵字,那麼你同步的其實只是呼叫這個方法的物件,所以無論如何都不會發生執行緒安全問題,除非物件同時被多次呼叫, 如果在方法 b 中加入 synchronized 關鍵字,則表示同步了 static 方法所在的類,這樣如果想在同一時間段內在多個地方呼叫該方法,肯定會產生同步效果,因為在整個虛擬機器中,這個類只有乙個二進位編碼, 在多執行緒中,它就是所謂的關鍵資源,每個人都想使用它,但又不想出現莫名其妙的資料錯誤,那麼我必須同步。至於方法a,就像我之前說的,如果這個物件同時被多次呼叫,那麼這個物件其實就是乙個關鍵資源,很多人都想用它,那麼你就排隊了,只有這樣才會發生同步效果。
如果你的 A 和 B 方法涉及到同乙個屬性的操作,那麼為了避免死鎖,可以將 synchronized 關鍵字和 wait()、notify() 方法一起使用,如果邏輯關係處理得當,你仍然可以按照自己的想象流程製作資料,對於初學者來說,邏輯控制比較麻煩, 當我第一次在這裡學習時,總會有邏輯錯誤導致程式無休止地迴圈。
-
不可以,物件的同步方法只能由乙個執行緒訪問。 無法輸入物件的同步方法,但仍可以訪問其其他非同步方法。
有兩種方法可以實現多執行緒,一種是繼承執行緒類,另一種是實現可執行的介面。
有兩種型別的同步實現,即同步、等待和通知。
wait():將執行緒置於等待狀態並釋放它所持有的物件的鎖。
sleep():將正在執行的執行緒置於休眠狀態,是乙個靜態方法,用於捕獲 InterruptedException 異常。
notify():喚醒處於等待狀態的執行緒,請注意,當呼叫此方法時,它不會完全喚醒處於等待狀態的執行緒,而是 JVM 決定喚醒哪個執行緒,而不是按優先順序。
allnotity():喚醒所有處於等待狀態的執行緒,請注意,不是讓所有喚醒的執行緒都鎖定在物件上,而是允許它們競爭。
-
有幾種情況:
1.是否先新增同步關鍵字,如果未新增,則可以。
2.如果在此方法中內部呼叫 wait,則可以進入其他同步方法。
3.如果所有其他方法都追加了 synchronized 關鍵字,並且沒有要等待的內部呼叫,則不能。
4.如果另乙個方法是靜態的,則它使用同步鎖,該同步鎖是當前類的位元組碼,並且不能與非靜態方法同步,因為非靜態方法使用此方法。
-
當執行緒進入乙個物件的同步方法時,它會獲得對該物件的鎖,即它占有該物件。
其他執行緒無法訪問此物件的其他同步方法和方法塊。 但是,如果物件未同步,則其他物件可以訪問該物件。
無線網路速度慢的原因有很多。
1.有人揉了網路,你在瀏覽器欄輸入它,然後開啟預設的使用者名稱和密碼是admin,點選確認開啟無線路由確認介面,然後無線設定-主機狀態,這裡可以看到連線到無線的主機數量,如果你發現乙個異常的主機,那麼你就是在揉網路, 建議您在此處輸入無線埋藏安全設定以修改無線密碼。 >>>More