public class Data {
static int version = 1;
static String data = "java的架构师技术栈";
public static int getVersion(){
return version;
}
public static void updateVersion(){
version = version + 1;
}
}
public class OptimThread extends Thread {
public int version;
public String data;
public void run() {
String text = Data.data;
println("线程"+ getName() + ",获得的数据版本号为:" + Data.getVersion());
println("线程"+ getName() + ",预期的数据版本号为:" + getVersion());
System.out.println("线程"+ getName()+"读数据完成=========data = " + text);
if(Data.getVersion() == getVersion()){
println("线程" + getName() + ",版本号为:" + version + ",正在操作数据");
synchronized(OptimThread.class){
if(Data.getVersion() == this.version){
Data.data = this.data;
Data.updateVersion();
System.out.println("线程" + getName() + "写数据完成=========data = " + this.data);
return ;
}
}
}else{
println("线程"+ getName() + ",获得的数据版本号为:" + Data.getVersion());
println("线程"+ getName() + ",预期的版本号为:" + getVersion());
System.err.println("线程"+ getName() + ",需要重新执行。==============");
}
}
}
public class Test {
public static void main(String[] args) {
for (int i = 1; i <= 2; i++) {
new OptimThread(String.valueOf(i), 1, "fdd").start();
}
}
}