什么是線程同步,什么是線程異步?同步的好處與弊端


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

線程異步:訪問資源時在空閑等待時同時訪問其他資源,實現多線程機制

異步處理就是,你現在問我問題,我可以不回答你,等我用時間了再處理你這個問題.同步不就反之了,同步信息被立即處理 -- 直到信息處理完成才返回消息句柄;異步信息收到后將在后台處理一段時間 -- 而早在信息處理結束前就返回消息句柄

 
 區別同步和異步
一個進程啟動的多個不相干線程,它們相互之間關系為異步。
同步必須執行到底之后才能執行其他操作,而異步可以任意操作
 
同步的好處與弊端
好處:解決了線程的安全問題。
弊端:每次都有判斷鎖,降低了效率。
但是在安全與效率之間,首先考慮的是安全。
 
同步的前提
一、多個線程執行的時候需要同步,如果是單線程則不需要同步。
二、多個線程在執行的過程中是不是使用同一把鎖。如果是,就是同步。否則不是同步。
 
synchronzied(obj){ }同一個所
 
synchronzied(new Object){ } 不是同一個鎖

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

同步的表現形式有兩種:

1、同步代碼塊,被同步關鍵字封裝的代碼就是同步代碼塊;
2、同步函數,被同步關鍵字修飾的函數就是同步函數。

 

同步代碼塊的鎖是可以是任意對象,在執行之前就好創建好一個鎖對象。那么同步函數的鎖在哪里?
同步函數的鎖就是調用該同步函數的對象,也就是this。

 

如果同步函數被static修飾,那么該同步函數的鎖就是這個類在堆內存中形成的類文件對象。
這時候不一定有該類的對象,但一定有該類的字節碼文件對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM