并发编程实战这本书的阅读,我以后会当作一个系列进行总结,主要讲一讲我的思考和感悟(因为并发相关的书籍和博客看的比较多,有很多系统化的理论思考其实是没有进行过总结的,因为最近面试阿里失败比较多,想想,我需要务实一下基础,从头绿一缕相关知识点)。
12.22日:
基础知识:
问题一:
同步代码块,synchronied内置锁机制,能够确保线程安全性,具有重入性。
看到这么一段代码:
public class W{
public synchronized void doSomething(){
}
}
public class Wth extends W{
public synchronized void doSomething(){
super.doSomething();
}
}
上述代码中,如果synchronized不具有重入属性,那Wth就会陷入非活跃性状态,也就是死锁状态,所以可重入不单单是提高代码执行性能的。
问题二:
原子性和原子操作的区别:
原子方式和原子操作通常是指通过复合操作满足竞态条件的一组操作。
典型的问题是volatile变量的读写具有原子性,但是++不具备原子性(读取-修改-写入,一组操作)。
延迟初始化:
单例模式有个双重锁检查,完美反应了延迟初始化这种复合操作。