为什么这个程序无法实现2个窗口同时卖10张火车票
发布网友
发布时间:2022-05-16 18:45
我来回答
共3个回答
热心网友
时间:2023-08-20 14:20
楼上的很明显错误的,Lz应该理解线程同步这个概念...
我给修改了下...谨做参考...
class maipiao {
public static void main(String[] args) {
SellTicket sell = new SellTicket();
new Thread(sell).start();
new Thread(sell).start();
}
}
class SellTicket implements Runnable {
Ticket tk = new Ticket();
public void run() {
while(true){
try {
Thread.sleep((int) (Math.random() * 1000));
} catch (InterruptedException exception) {
System.err.println(exception.toString());}
tk.ecrease();
}
}
}
class Ticket {
int ticket = 10;
public synchronized void ecrease() {
if (ticket > 0) {
System.err.println(Thread.currentThread().getName() + " " + ticket);
ticket--;
}
}
}
这么写你的意图基本就可以实现了,要把票和卖票的分开两个类写,这是思想的问题,当然你那么写也是可以出现正确结果的,注意线程应该指向同一个对象,而且要用同步,否则会出现第0张这种状况的...
热心网友
时间:2023-08-20 14:20
你要两个窗口是吧
看看,我测试通过了
class maipiao {
public static void main(String[] args) {
Thread tt = new Thread(new piao());
tt.start();
Thread tt2 = new Thread(new piao());
tt2.start();
}
}
class piao implements Runnable {
public void run() {
int tiket = 10;
while (tiket-- > 0) {
System.out.println(Thread.currentThread().getName() + " " + tiket);
}
}
}
class piao implements Runnable {
public void run() {
int tiket = 10;
while (tiket-- > 0) {
System.out.println(Thread.currentThread().getName() + " " + tiket);
}
}
}
热心网友
时间:2023-08-20 14:20
好难啊