synchronized詳解 如何延長(zhǎng)Java程序員的職業(yè)壽命?
如何延長(zhǎng)Java程序員的職業(yè)壽命?只要學(xué)會(huì)熟練?,F(xiàn)在有哪些理論上的科技在未來會(huì)讓人類受益?感謝您的邀請(qǐng),永久機(jī)器volatile和synchronized之間的區(qū)別:1。volatile的本質(zhì)是告訴J
如何延長(zhǎng)Java程序員的職業(yè)壽命?
只要學(xué)會(huì)熟練。
現(xiàn)在有哪些理論上的科技在未來會(huì)讓人類受益?
感謝您的邀請(qǐng),永久機(jī)器
volatile和synchronized之間的區(qū)別:
1。volatile的本質(zhì)是告訴JVM寄存器(工作內(nèi)存)中當(dāng)前變量的值是不確定的,需要從主存中讀??;synchronized是鎖定當(dāng)前變量,只有當(dāng)前線程可以訪問該變量,其他線程被阻塞。
2. Volatile只能在變量級(jí)別使用;synchronized可以在變量、方法和類級(jí)別使用。
3. Volatile只能實(shí)現(xiàn)變量修改的可見性和原子性,synchronized可以保證變量修改的可見性和原子性。
4. Volatile不會(huì)導(dǎo)致線程阻塞;synchronized可能會(huì)導(dǎo)致線程阻塞。
5. 用volatile標(biāo)記的變量不會(huì)被編譯器優(yōu)化;用synchronized標(biāo)記的變量可以被編譯器優(yōu)化。