用關(guān)鍵字synchronized聲明方法在某些情況下是由弊端的,比如A線程調(diào)用同步方法執(zhí)行一個長時間任務(wù),那么B線程則必須等待比較長的時間。在這樣的情況下,可以使用synchronized同步語句塊來解決。synchronized方法是對當前對象進行加鎖,而synchronized代碼塊是對某一個對象進行加鎖。
為了證明用synchronized關(guān)鍵字聲明方法是有弊端的,看下面的例子,先看常量類:

任務(wù)類:

線程類:


運行類:

運行結(jié)果:

在使用synchronized關(guān)鍵字來聲明方法public synchronized void doLongTimeTask()時從運行時間上來看,弊端很明顯,解決這樣的問題可以使用synchronized同步語句塊。