回覆列表
  • 1 # Bcdsz

    執行緒同步:是多個執行緒同時訪問同一資源,等待資源訪問結束,浪費時間,效率低 執行緒非同步:訪問資源時在空閒等待時同時訪問其他資源,實現多執行緒機制非同步處理就是,你現在問我問題,我可以不回答你,等我用時間了再處理你這個問題.同步不就反之了,同步資訊被立即處理 -- 直到資訊處理完成才返回訊息控制代碼;非同步資訊收到後將在後臺處理一段時間 -- 而早在資訊處理結束前就返回訊息控制代碼區別同步和非同步一個程序啟動的多個不相干執行緒,它們相互之間關係為非同步。同步必須執行到底之後才能執行其他操作,而非同步可以任意操作同步的好處與弊端好處:解決了執行緒的安全問題。弊端:每次都有判斷鎖,降低了效率。但是在安全與效率之間,首先考慮的是安全。同步的前提一、多個執行緒執行的時候需要同步,如果是單執行緒則不需要同步。二、多個執行緒在執行的過程中是不是使用同一把鎖。如果是,就是同步。否則不是同步。synchronzied(obj){ }同一個所synchronzied(new Object){ } 不是同一個鎖對run()中需要同步的程式碼進行同步,如果有的程式碼不需要同步,則不要放到同步程式碼塊中去。同步的表現形式有兩種:1、同步程式碼塊,被同步關鍵字封裝的程式碼就是同步程式碼塊;2、同步函式,被同步關鍵字修飾的函式就是同步函式。同步程式碼塊的鎖是可以是任意物件,在執行之前就好建立好一個鎖物件。那麼同步函式的鎖在哪裡?同步函式的鎖就是呼叫該同步函式的物件,也就是this。如果同步函式被static修飾,那麼該同步函式的鎖就是這個類在堆記憶體中形成的類檔案物件。這時候不一定有該類的物件,但一定有該類的位元組碼檔案物件。

  • 中秋節和大豐收的關聯?
  • 協方差怎麼計算,請舉例說明?