class Foo{
private int x = 100;
public int getX(){
return x;
}
public void fix(int y){
x = x - y;
}
}
class MyRunnable implements Runnable{
Foo foo = new Foo();
public void run(){
for(int i=0;i<3;i++){
synchronized(this){
fix(30);
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+": "+foo.getX());
}
}
}
public void fix(int x){
foo.fix(x);
}
public static void main(String args[]){
MyRunnable r = new MyRunnable();
Thread ta = new Thread(r,"Thread-A");
Thread tb = new Thread(r,"Thread-B");
ta.start();
tb.start();
}
}//试了多次,结果是:
Thread-A: 70
Thread-A: 40
Thread-A: 10
Thread-B: -20
Thread-B: -50
Thread-B: -80应该可以如下这样显示的吧?
Thread-A: 70
Thread-B: 40
Thread-A: 10
Thread-B: -20
Thread-A: -50
Thread-B: -80