private synchronized void deduct()
{
System.out.println(Thread.currentThread().getName()+ " Before Deduction "+balance);
if(Thread.currentThread().getName().equals("First") && balance>=50)
{
System.out.println(Thread.currentThread().getName()+ " Have Sufficent balance will sleep now "+balance);
try
{
Thread.currentThread().sleep(100);
}
catch(Exception e)
{
System.out.println("ThreadInterrupted");
}
balance = balance - 50;
}
else if(Thread.currentThread().getName().equals("Second") && balance>=100)
{
balance = balance - 100;
}
System.out.println(Thread.currentThread().getName()+ " After Deduction "+balance);
System.out.println(Thread.currentThread().getName()+ " "+balance);
}
Я сделал этот метод синхронизированным, я запускаю два отдельных потока, которые работают одновременно и запускают этот метод, что приводит к нежелательным результатам !!
Если я прокомментирую блок try catch, он будет работать нормально, так что использование синхронизированного блока ограничено до тех пор, пока я не буду использовать этот блок try catch