想实现多地区买票,直至票数从100减到0.大家帮忙看看这个程序哪错了!public class Test3 { public static void main(String[] args)throws Exception {
Tickages a=new Tickages();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
}}
class Tickages implements Runnable
{
int tickages=100;
public void run()
{
while(true)
{
if(tickages>0 )
{System.out.println(Thread.currentThread().getName()+"tickages"+tickages);
tickages--;
}
}
}
}
Tickages a=new Tickages();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
new Thread(a).start();
}}
class Tickages implements Runnable
{
int tickages=100;
public void run()
{
while(true)
{
if(tickages>0 )
{System.out.println(Thread.currentThread().getName()+"tickages"+tickages);
tickages--;
}
}
}
}
while(true){
synchronized(this){
if(tickages>0 ){
System.out.println(Thread.currentThread().getName()+"tickages"+tickages);
tickages--;
}
}
Thread.currentThread().sleep(100);//休眠一下
}
}
每new一个对象就有100张,你new四个就400张另外100张走完后你就是死循环了
Thread.currentThread().sleep(100);//休眠一下
这句话又有什么用呢?
LZ只new了一个Runnable对象,怎么成400张了。
这句话就是让当前正在执行的线程休眠100毫秒,这样才有模拟的效果还有如3L所说,没有跳出条件,应该加一句
if(tickages==0)
break;