廖雪峰Java11多线程编程-2线程同步-2synchronized方法
2020-12-12 22:28
标签:val 技术 final 线程安全 成员 lda value get end 所以,为了保险起见,读取方法通常也要同步。 如果一个类被设计为允许多线程正确访问: 非线程安全的类: 廖雪峰Java11多线程编程-2线程同步-2synchronized方法 标签:val 技术 final 线程安全 成员 lda value get end 原文地址:https://www.cnblogs.com/csj2018/p/11001483.html1.Java使用synchronized对一个方法进行加锁
class Counter{
int count = 0;
public synchronized void add(int n){
count += n;
}
public synchronized void dec(int n){
count -= n;
}
public int get(){//读取一个int类型是原子操作,不需要同步
return count;
}
}
class AddThread extends Thread {
Counter counter;
public AddThread(Counter counter) {
this.counter = counter;
}
public void run() {
for (int i = 0; i
2.读取方法是否需要同步?
public int get(){ //读取一个int类型是原子操作,不用同步
return count;
}
public synchronized int[] get(){
int[] result = new int[2];
result[0] = this.value[0];
result[1] = this.value[1];//读取万result[0],如果其他线程改变了result[1]的值,会导致读取的结果不一致。
return result;
}
3.线程安全与非线程安全
线程安全的类:
4.总结:
文章标题:廖雪峰Java11多线程编程-2线程同步-2synchronized方法
文章链接:http://soscw.com/essay/23706.html