您的位置:

java模拟多线程并发购票业务(java多线程买票)

本文目录一览:

java多线程模拟买票问题 用图形用户界面

能详细说明一下买票按钮的功能是什么吗

程序有几个问题:

第一,maipiao类名要首字母大写,变量的定义尽量不要使用中文

第二,Sell A; 没有初始化,然后你就开始了调用

第三,public void actionPerformed(ActionEvent e),放在Maipiao类里面,什么时候被调用??

第四,多线程的public void run()方法,同样在Maipiao类中,可是它没有被调用

问题有不少,我实在修改不下去了,明天白天如果有空就帮你重写一个

终于给你修改完了,要的话留邮箱

java 多线程模拟火车售票系统问题

在synchronized(str) 里加一句 if(ticket 0) //判断是否有余票,没有余票还卖什么?

也就是这样:

package socket;

public class Test

{

public static void main(String [] args)

{

TestThread tt=new TestThread();

new Thread(tt).start();

new Thread(tt).start();

new Thread(tt).start();

new Thread(tt).start();

}

}

class TestThread implements Runnable

{

int ticket=10;

String str=" ";

public void run()

{

while(ticket0)

{

synchronized(str)

{

if(ticket 0 ) {

System.out.println(Thread.currentThread().getName()+":ticket "+ticket+" is saling");

ticket--;

}

}

}

}

}

你的while循环只是超出票数的循环,在同步里面还要有判断是否有票的条件.因为里面同步的时候除了一个线程在执行外,其它几个都在等待,而此时并没有跳出循环,当然会出现负数了.

当然把while判断放到同步代码里面去也可以.不过这样就没有超出票数的判断了,实际应用中应该有个超出票数的判断.. 例如 :for(int i=0;i100;i++) //同步检测 只有5张票,显示100张,实际上卖出的还是5张..用来检测同步是否正确...

java多线程模拟售票问题

结果是对的,每一个售票的线程都有自己票数,所以每个线程都会售出十张票;

如果你想让这五个售票线程只能售出十张票的话,那就

private static int Ticketnum=10;

//设置成静态变量,这样的话,他就不属于实例了,而是属于整个类了