一个线程同步的问题synchronized
下面的程序是没问题的,我想知道2个问题:
1。 synchronized(a1)为什么这里是this就不对了?
2。这个try和catch有必要吗?
try
{
sleep(1);
}catch(InterruptedException e)
{System.out.println(e);}
public class Account1
{
private String name;
private int value;
public static void main(String[]args)
{
Account1 a1=new Account1();
(new Save1(a1,100)).start();
(new Save1(a1,200)).start();
(new Fetch1(a1,100)).start();
}
void put(int i)
{
value=value+i;
}
int get(int i)
{
if(value>i)
value=value-i;
else
{
i=value;
value=0;
}
return i;
}
int howmatch()
{
return value;
}
}
class Save1 extends Thread
{
private Account1 a1;
private int amount;
public Save1(Account1 a2,int amount)
{
a1=a2;
this.amount=amount;
}
public void run()
{
synchronized(a1)
{
int k=a1.howmatch();
try
{
sleep(1);
}catch(InterruptedException e)
{System.out.println(e);}
a1.put(amount);
System.out.println("现有"+k+",存入"+amount+",余额"+a1.howmatch());
}
}
}
class Fetch1 extends Thread
{
private Account1 a1;
private int amount;
public Fetch1(Account1 a3,int amount)
{
this.a1=a3;
this.amount=amount;
}
public void run()
{
synchronized(a1)
{
int k=a1.howmatch();
try
{
sleep(1);
}catch(InterruptedException e)
{System.out.println(e);}
a1.get(amount);
System.out.println("现有"+k+",取走"+amount+",余额"+a1.howmatch());
}
}
}