用關(guān)鍵字synchronized聲明方法在某些情況下是由弊端的,比如A線程調(diào)用同步方法執(zhí)行一個(gè)長時(shí)間任務(wù)坠七,那么B線程則必須等待比較長的時(shí)間倔既。在這樣的情況下,可以使用synchronized同步語句塊來解決切心。synchronized方法是對當(dāng)前對象進(jìn)行加鎖飒筑,而synchronized代碼塊是對某一個(gè)對象進(jìn)行加鎖。
為了證明用synchronized關(guān)鍵字聲明方法是有弊端的绽昏,看下面的例子协屡,先看常量類:
任務(wù)類:
線程類:
運(yùn)行類:
運(yùn)行結(jié)果:
在使用synchronized關(guān)鍵字來聲明方法public synchronized void doLongTimeTask()時(shí)從運(yùn)行時(shí)間上來看,弊端很明顯全谤,解決這樣的問題可以使用synchronized同步語句塊肤晓。