線程同步的幾種方式 什么是線程的同步?為什么要實現(xiàn)線程的同步?
什么是線程的同步?為什么要實現(xiàn)線程的同步?線程同步:多個線程同時訪問同一個資源,等待資源訪問的結束,浪費時間,效率低線程異步:訪問資源時,空閑等待的同時訪問其他資源,實現(xiàn)多線程機制異步處理是,如果你現(xiàn)
什么是線程的同步?為什么要實現(xiàn)線程的同步?
線程同步:多個線程同時訪問同一個資源,等待資源訪問的結束,浪費時間,效率低
線程異步:訪問資源時,空閑等待的同時訪問其他資源,實現(xiàn)多線程機制
異步處理是,如果你現(xiàn)在問我一個問題,我不能回答你,然后我可以在我使用時間的時候處理你的問題,同步信息立即被處理——直到信息處理完成后才返回消息句柄;異步信息接收后會在后臺處理一段時間——最早在信息處理結束前返回消息句柄
區(qū)分同步和異步
一個進程啟動的多個無關線程,它們之間的關系是異步的。
同步必須執(zhí)行到最后才能執(zhí)行其他操作,異步可以任意操作
同步的優(yōu)缺點
優(yōu)點:解決了線程安全問題。
缺點:每次都有判斷鎖,降低效率。
但是在安全和效率之間,首先考慮的是安全。
同步的前提
1。當多個線程執(zhí)行時,需要同步。如果是單線程,則不需要同步。
2、多個線程在執(zhí)行期間是否使用同一個鎖。如果是,那就是同步。否則,它不是同步的。
Synchronized(obj){}相同的鎖
Synchronized(new object){}不是相同的鎖
同步需要在run()中同步的代碼。如果某些代碼不需要同步,請不要將其放入同步代碼塊中。
有兩種形式的同步:
1。同步碼塊,同步關鍵字封裝的代碼為同步碼塊;
2。同步函數(shù),同步關鍵字修改的函數(shù)為同步函數(shù)。
同步代碼塊的鎖可以是任何對象,因此可以在執(zhí)行前創(chuàng)建鎖對象。那么同步功能的鎖在哪里呢?
同步函數(shù)的鎖是調(diào)用同步函數(shù)的對象,即。
如果同步功能由靜態(tài)修改,則同步功能的鎖是由堆內(nèi)存中的類形成的類文件對象。
此時,可能沒有此類的對象,但必須有此類的字節(jié)碼文件對象。