回覆列表
  • 1 # 我吃素一杯倒

    執行緒同步:是多個執行緒同時訪問同一資源,等待資源訪問結束,浪費時間,效率低

    執行緒非同步:訪問資源時在空閒等待時同時訪問其他資源,實現多執行緒機制

    區別同步和非同步

    一個程序啟動的多個不相干執行緒,它們相互之間關係為非同步。

    同步必須執行到底之後才能執行其他操作,而非同步可以任意操作

    同步的好處與弊端

    好處:解決了執行緒的安全問題。

    弊端:每次都有判斷鎖,降低了效率。

    但是在安全與效率之間,首先考慮的是安全。

    同步的前提

    一、多個執行緒執行的時候需要同步,如果是單執行緒則不需要同步。

    二、多個執行緒在執行的過程中是不是使用同一把鎖。如果是,就是同步。否則不是同步。

    synchronzied(obj){ }同一個所

    synchronzied(new Object){ } 不是同一個鎖

    對run()中需要同步的程式碼進行同步,如果有的程式碼不需要同步,則不要放到同步程式碼塊中去。

    同步的表現形式有兩種:

    1、同步程式碼塊,被同步關鍵字封裝的程式碼就是同步程式碼塊;

    2、同步函式,被同步關鍵字修飾的函式就是同步函式。

    同步程式碼塊的鎖是可以是任意物件,在執行之前就好建立好一個鎖物件。那麼同步函式的鎖在哪裡?

    同步函式的鎖就是呼叫該同步函式的物件,也就是this。

    如果同步函式被static修飾,那麼該同步函式的鎖就是這個類在堆記憶體中形成的類檔案物件。

    這時候不一定有該類的物件,但一定有該類的位元組碼檔案物件。

  • 中秋節和大豐收的關聯?
  • 膝上型電腦玩英雄聯盟fps低,怎麼破解?