1. 程式人生 > >在 Java 的多執行緒中,如何去判斷給定的一個類是否是執行緒安全的(另外:synchronized 同步是否就一定能保證該類是執行緒安全的。)

在 Java 的多執行緒中,如何去判斷給定的一個類是否是執行緒安全的(另外:synchronized 同步是否就一定能保證該類是執行緒安全的。)

同步程式碼塊和同步方法的區別:同步程式碼塊可以傳入任意物件,同步方法中 如果多個執行緒檢查的都是一個新的物件,不同的同步鎖對不同的執行緒不具有排他性,不能實現執行緒同步的效果,這時候執行緒同步就失效了。   兩者的區別主要體現在同步鎖上面。對於例項的同步方法,因為只能使用this來作為同步鎖,如果一個類中需要使用到多個鎖,為了避免鎖的衝突,必然需要使用不同的物件,這時候同步方法不能滿足需求,只能使用同步程式碼塊(同步程式碼塊可以傳入任意物件);