package cn.bufanli.test;
/**
* 脏读
* 业务整体需要使用完整的synchronized 保持业务的原子性
*/
public class DirtyRead {
private String username = "un";
private String password = "ps";
public synchronized void getvalue() {
System.out.println("get: "+this.username + " : " + this.password);
}
public synchronized void setgetValue(String username,String password) {
this.password = password;
this.username = username;
System.out.println("set: "+this.username + " : " + this.password);
}
/**
* 总结:
* 在我们对一个对象的方法加锁的时候,需要考虑业务的整体性,即为set,get方法同时加synchronized关键字,
* 保证业务的原子性,不然会出现业务错误也从侧面保证业务的原子性,不然会出现业务的错误
*
* @param args
*/
public static void main(String[] args) {
DirtyRead dirtyRead = new DirtyRead();
Thread thread = new Thread(() -> {
dirtyRead.setgetValue("bsl","bsl");
},"set");
thread.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dirtyRead.getvalue();
}
}
java并发编程--脏读
猜你喜欢
转载自blog.csdn.net/adminBfl/article/details/102911436
今日推荐
周排行