class Resource
{
int i;
  synchronized void add()
{
i ++;
} void minus()
{
synchronized (this)
{
i --;
} }} class Thread1 extends Thread
{
Resource r;
 void Thread1(Resource r)
{
this.r = r;
}
public void run()
{
while(true)
{
r.add();
}
}
} class Thread2 extends Thread
{
Resource r;
 void Thread2(Resource r)
{
this.r = r;
}
public void run()
{
while(true)
{
r.minus();
}
}
}public class Test 
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
Resource r = new Resource();
Thread1 t1 = new Thread1(r);
Thread2 t2 = new Thread2(r);
t1.start();
t2.start();
}
}