學習源:
https://www.bilibili.com/video/BV1aJ411V763?spm_id_from=333.788.videopod.episodes&vd_source=32e1c41a9370911ab06d12fbc36c4ebc
1.應用場景 不超賣,也要考慮性能問題(場景)
2.常見面試問題: sync出現異常是否釋放鎖
synchronized 和 Lock的區別
synchronized 和 volatile的區別
3.up舉了幾個例子
對于可見性:
run是共享變量
線程1是 while(run) 死循環
1秒后,線程2執行。線程2修改run為false后,打印退出。
預期線程2執行完成后,線程1立即結束。但是既然UP說存在可見性問題: 是指當一個線程對共享變量進行了修改,那么另外的線程可以立即看到修改后的最新值。
我猜會過一段時間結束。但是不知道會有多久。疑問是如果一直不做處理,會一直不可見嗎?
接著是原子性。 這個概念深入我心。不再抄定義。我對于可見性容易忘,可能是我不夠熟悉可見性的定義。對定義模糊導致的。可見性就是說對于共享變量的修改,其他線程可以立即感知。可見的東西是并發編程場景下,那個共享變量的可見性。一定要明確定義,才不會含含糊糊。