public class faker implements Runnable{
int a;
public void set(int b)
{
a=b;
}
public void run()
{
while(a<1000){
if(Thread.currentThread().getName().equals("会计"))
{
inout(20);
}
if(Thread.currentThread().getName().equals("出纳"))
{
inout(10);
}
}
// return ;
}//
public synchronized void inout(int am)
{
if(Thread.currentThread().getName().equals("会计"))
{
for(int i=0;i<3;i++)
{
a+=am;
System.out.println("收入"+am);
System.out.println("现额"+a);
}
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{ }
}
else if(Thread.currentThread().getName().equals("出纳"))
{
for(int i=0;i<3;i++)
{
a-=am;
System.out.println("支出"+am);
System.out.println("现额"+a);
}
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{ }
}
}
}
这个程序里面 我希望看到的是a在1000以下两个线程互相交替调用 到了1000就自动结束程序
不过结果确实 1000以下运行良好 但是一旦过了1000 那个会计线程就跟死了一样 然后无限循环调用 出纳线程
怎么回事诶
int a;
public void set(int b)
{
a=b;
}
public void run()
{
while(a<1000){
if(Thread.currentThread().getName().equals("会计"))
{
inout(20);
}
if(Thread.currentThread().getName().equals("出纳"))
{
inout(10);
}
}
// return ;
}//
public synchronized void inout(int am)
{
if(Thread.currentThread().getName().equals("会计"))
{
for(int i=0;i<3;i++)
{
a+=am;
System.out.println("收入"+am);
System.out.println("现额"+a);
}
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{ }
}
else if(Thread.currentThread().getName().equals("出纳"))
{
for(int i=0;i<3;i++)
{
a-=am;
System.out.println("支出"+am);
System.out.println("现额"+a);
}
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{ }
}
}
}
这个程序里面 我希望看到的是a在1000以下两个线程互相交替调用 到了1000就自动结束程序
不过结果确实 1000以下运行良好 但是一旦过了1000 那个会计线程就跟死了一样 然后无限循环调用 出纳线程
怎么回事诶