public class SyncThread implements Runnable{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SyncThread sync = new SyncThread();
Thread ta = new Thread(sync);
Thread tb = new Thread(sync);
ta.start();
tb.start();
}
private Foo foo = new Foo();
public void run()
{
for(int i = 0 ; i < 3;i ++)
{
this.fix(30);
try
{
Thread.sleep(30);
}
catch(InterruptedException e)
{}
System.out.println(Thread.currentThread().getName()+" : current foo object x value = " + foo.getX());
}
}
private int fix(int y)
{
return foo.fix(y);
}
public class Foo
{
private int x = 100;
public int getX()
{
return x;
}
public int fix(int y)
{
synchronized(this)
{
x = x-y;
return x;
}
}
}
}