我的一个线程子类的方法是这样的
public synchronized void test(User user,String name){
this.wait(1000L);
user.setName(this.getName());//这个getName()是父类的 ,Name由构造器决定
System.out.println("这是线程"+user.getName());
}
我生成了4个线程,分别命名为1,2,3,4,它们都指向同一个user。run里也只有这方法,运行结果是:有时是 几个都是这是线程2(或其他),也就是说user.setName(this.getName())和 System.out.println()分开了。为什么?我用 synchronized (user){}就没有这情况 |
|