java線程鎖為什么鎖不住?
代碼沒(méi)發(fā)全。但是還是可以猜一下,我猜account是這個(gè)類的一個(gè)普通成員變量。你new了三個(gè)這個(gè)類的instance,所以在內(nèi)存里有三個(gè)account被三個(gè)thread操作,即使你sync這個(gè)類的class,也不會(huì)起作用。兩個(gè)基本解決方案:1,把a(bǔ)ccount聲明成static。 2,把這個(gè)類從繼承thread變成實(shí)現(xiàn)runnable,在main方法里只new一個(gè)這個(gè)類的實(shí)例,并發(fā)的thred都用這一個(gè)實(shí)例。
還有很多Java的獨(dú)有的辦法解決這個(gè)問(wèn)題,例如: 用atomicinteger來(lái)做account,就不需要sync了