练习:继承Thread方式,多窗口卖票
创建三个窗口卖票,总票数为30张.使用继承Thread类的方式
(存在线程的安全问题,待解决。)
一、方式一解决
代码:
package exer1;
class Window extends Thread{
private static int ticket = 30;
@Override
public void run() {
while(true){
if(ticket > 0){
System.out.println(getName() + ":卖票,票号为:" + ticket);
ticket--;
}else{
break;
}
}
}
}
public class WindowTest {
public static void main(String[] args) {
Window t1 = new Window();
Window t2 = new Window();
Window t3 = new Window();
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
输出:
窗口3:卖票,票号为:30
窗口2:卖票,票号为:30
窗口2:卖票,票号为:28
窗口2:卖票,票号为:27
窗口2:卖票,票号为:26
窗口1:卖票,票号为:30
窗口2:卖票,票号为:25
窗口3:卖票,票号为:29
窗口2:卖票,票号为:23
窗口2:卖票,票号为:21
窗口2:卖票,票号为:20
窗口2:卖票,票号为:19
窗口2:卖票,票号为:18
窗口2:卖票,票号为:17
窗口1:卖票,票号为:24
窗口2:卖票,票号为:16
窗口3:卖票,票号为:22
窗口2:卖票,票号为:14
窗口2:卖票,票号为:12
窗口1:卖票,票号为:15
窗口2:卖票,票号为:11
窗口3:卖票,票号为:13
窗口3:卖票,票号为:8
窗口2:卖票,票号为:9
窗口1:卖票,票号为:10
窗口2:卖票,票号为:6
窗口3:卖票,票号为:7
窗口3:卖票,票号为:3
窗口3:卖票,票号为:2
窗口3:卖票,票号为:1
窗口2:卖票,票号为:4
窗口1:卖票,票号为:5
二、方式二解决
package exer1;
class Window1 implements Runnable{
private int ticket = 30;
@Override
public void run() {
while(true){
if(ticket > 0){
System.out.println(Thread.currentThread().getName() + ":卖票,票号为:" + ticket);
ticket--;
}else{
break;
}
}
}
}
public class WindowTest1 {
public static void main(String[] args) {
Window1 w = new Window1();
Thread t1 = new Thread(w);
Thread t2 = new Thread(w);
Thread t3 = new Thread(w);
t1.setName("窗口1");
t2.setName("窗口2");
t3.setName("窗口3");
t1.start();
t2.start();
t3.start();
}
}
输出:
窗口3:卖票,票号为:30
窗口2:卖票,票号为:30
窗口2:卖票,票号为:28
窗口1:卖票,票号为:30
窗口2:卖票,票号为:27
窗口3:卖票,票号为:29
窗口2:卖票,票号为:25
窗口2:卖票,票号为:23
窗口2:卖票,票号为:22
窗口2:卖票,票号为:21
窗口1:卖票,票号为:26
窗口2:卖票,票号为:20
窗口3:卖票,票号为:24
窗口2:卖票,票号为:18
窗口2:卖票,票号为:16
窗口2:卖票,票号为:15
窗口1:卖票,票号为:19
窗口2:卖票,票号为:14
窗口3:卖票,票号为:17
窗口2:卖票,票号为:12
窗口1:卖票,票号为:13
窗口3:卖票,票号为:11
窗口2:卖票,票号为:10
窗口2:卖票,票号为:7
窗口2:卖票,票号为:6
窗口2:卖票,票号为:5
窗口2:卖票,票号为:4
窗口2:卖票,票号为:3
窗口2:卖票,票号为:2
窗口2:卖票,票号为:1
窗口1:卖票,票号为:9
窗口3:卖票,票号为:8