线程安全性
什么是线程安全性
当多个线程访问某个类时,不管运行时环境采用何种调度方式或者线程将将如何交替,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的
原子性
当某个计算的正确性取决于多个线程的交替执行时序时,那么就会发生竞态条件,竞态条件会引发计算结果变得不可靠,因此要避免竞态条件引起的问题需要引入原子操作。
用锁保护可以保证原子性操作,但是如果持有锁的时间过长,那么都会带来活跃性或性能问题,因此当执行时间较长的计算或者可能无法快速完成的操作时,一定不要持有锁