synchronized
synchronized关键字可以保障原子性,可见性和有序性
线程不安全
非线程安全问题会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是”脏读“,什么是脏读呢?mysql事务中的脏读和这个很类似,读取到的数据是被更改过的。
线程安全是指获得实例变量的值是经过同步处理的,不会出现脏读
public class safe {
public void add(String username){
int num = 0;//方法内
}
}
这种方法内部的变量是不存在非线程安全问题的
public class safe {
private int num = 0;//方法外
public void add(String username){
}
}
如果多个线程共同访问一个对象中的实例变量,有可能出现非线程安全问题
同样两个线程同时访问同一个对象中的没有同步的方法,也可能出现非线程安全问题,不过只需要加synchronized即可,在我的上一篇博客中也有提到
Java多线程及api可以了解一下哦
脏读
发生脏读的原因时在读取实例变量时,此值