前面接触了线程安全与非线程安全相关的技术点,它们是学习多线程技术时一定会遇到的经典问题。非线程安全其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是脏读,也就是取到的数据其实是被更改过的。而线程安全就是以获得的实例变量的值是经过同步处理的,不会出现脏读情况,比如synchronized关键字可以加在方法前面,使方法变成同步方法。
非线程安全的问题存在于实例变量中,如果是方法内部的私有变量,则不存在非线程安全问题,所得结果也就是线程安全的了。
例如:
运行结果:
可见,方法中的变量不存在非线程安全问题,永远都是线程安全的。这是方法内部的变量是私有的特性造成的。