学习源:
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说存在可见性问题: 是指当一个线程对共享变量进行了修改,那么另外的线程可以立即看到修改后的最新值。
我猜会过一段时间结束。但是不知道会有多久。疑问是如果一直不做处理,会一直不可见吗?
接着是原子性。 这个概念深入我心。不再抄定义。我对于可见性容易忘,可能是我不够熟悉可见性的定义。对定义模糊导致的。可见性就是说对于共享变量的修改,其他线程可以立即感知。可见的东西是并发编程场景下,那个共享变量的可见性。一定要明确定义,才不会含含糊糊。