JAVA 多线程 模拟多窗口售票
package com.supinfo.java;
class Window1 implements Runnable{
int tickets = 300;
@Override
public void run() {
while(true){
if(tickets>0){
try {
Thread.currentThread().sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+",售票,票号为:"+tickets--);
}else{
break;
}
}
}
}
public class TestWindow2 {
public static void main(String[] args) {
Window1 w1 = new Window1();
Thread t1 = new Thread(w1);
t1.setName("窗口1");
Thread t2 = new Thread(w1);
t2.setName("窗口2");
Thread t3 = new Thread(w1);
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
结果会有重票和错票,错票比较好理解,哪位大神给我解释下,为什么有重票的情况发生。
class Window1 implements Runnable{
int tickets = 300;
@Override
public void run() {
while(true){
if(tickets>0){
try {
Thread.currentThread().sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+",售票,票号为:"+tickets--);
}else{
break;
}
}
}
}
public class TestWindow2 {
public static void main(String[] args) {
Window1 w1 = new Window1();
Thread t1 = new Thread(w1);
t1.setName("窗口1");
Thread t2 = new Thread(w1);
t2.setName("窗口2");
Thread t3 = new Thread(w1);
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
结果会有重票和错票,错票比较好理解,哪位大神给我解释下,为什么有重票的情况发生。
...全文
相关推荐
huzhou.rar_java火车售票_多窗口_火车站 售票_火车通信_车站售票
《基于Java实现的火车站售票系统模拟》火车站售票系统是一个典型的多线程应用案例,它涉及到并发控制、线程通信等多个重要概念。
多窗口售票模拟.doc
根据提供的文档信息,我们可以分析出该文档描述了一个基于Java AWT库实现的多窗口售票模拟程序。接下来将从几个方面详细解析此程序的关键知识点。### 1.
demo.rar_DEMO_java线程_个
在给定的"demo.rar_DEMO_java线程_个"压缩包中,我们可以看到一个关于Java线程使用的示例,特别是涉及到多窗口售票的场景。
浅谈对java中锁的理解
四、使用示例多窗口售票系统是一个典型的多线程访问共享资源的例子。通过使用synchronized关键字,可以确保多个线程访问共享资源的安全性。在示例中,我们创建了一个Ticket类,用于模拟售票系统。
多线程设计一个火车售票模拟程序
"多线程设计一个火车售票模拟程序"在本实验中,我们将使用 Java 语言来设计一个火车售票模拟程序。这个程序模拟了火车站中的售票情况,具有5个售票点,每个售票点都可以售出火车票。


Java SE
