运用多线程实现火车票买票的案例

1.创建多线程类继承Runnable
package test3;

public class TicketThread implements Runnable{
int ticket = 100;
Object obj = new Object();
public void run() {
//method(); //method是实现了同步方法,可以解决火车票出现的问题,
while(true) {
synchronized (obj) { //也可以在run()里面采用同步代码块的形式,来解决出现的异常
if(ticket>0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+”:”+ticket–);
}
}
}

}
private synchronized void method() {
    while(true) {
            if(ticket>0) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName()+":"+ticket--);              
        }       
    }
}

}

2.实现多线程

package test3;

public class TicketThreadDemo {
public static void main(String[] args) {
TicketThread tr = new TicketThread();

    Thread t = new Thread(tr);
    t.setName("窗口一");       

    Thread t2 = new Thread(tr);
    t2.setName("窗口二");

    Thread t3 = new Thread(tr);
    t3.setName("窗口三");

    t.start();
    t2.start();
    t3.start();
    }

}

猜你喜欢

转载自blog.csdn.net/StreamlineWq/article/details/81708253
今日推荐