有三个线程,启动后都执行pass方法,然后将线程各自的name和address传递给pass方法,传的name和address值第一个字母都是相同的。count、name、address是共享变量。一直想不明白为什么下面两种写法得到的结果不一样,实在想不明白了,希望能有人帮帮忙,万分感谢!
public void pass(String Pname,String Paddress){
this.count++;
this.Pname=Pname;
this.Paddress=Paddress;
check();
}
private void check(){
if(Pname.charAt(0)!=Paddress.charAt(0))
System.out.println("*******broken********"+toString());
}
上面的pass方法调用和下面的有什么区别?在多线程不加pass方法不加synchronized的情况下为什么两者的运行情况完全不一样?
public void pass(String Pname,String Paddress){
this.count++;
this.Pname=Pname;
this.Paddress=Paddress;
if(Pname.charAt(0)!=Paddress.charAt(0))
System.out.println("*******broken********"+toString());
}