我这样写了一个 线程的题目public class Thread4 {
public static void main(String[] args) {
Chuangkou c1 = new Chuangkou(1);
Chuangkou c2 = new Chuangkou(2);
Chuangkou c3 = new Chuangkou(3);
Chuangkou c4 = new Chuangkou(4);
c1.start();
c2.start();
c3.start();
c4.start();
}
}class Chuangkou extends Thread {
private int a; public Chuangkou(int a) {
this.a = a;
} public synchronized void run() {
int s;
for (s = 1; s < 100;) {
if (a == 1) { System.out.println("第" + s + "张票,1号窗口出售");
s++; } else if (a == 2) { System.out.println("第" + s + "张票,2号窗口出售");
s++;

} else if (a == 3) { System.out.println("第" + s + "张票,3号窗口出售");
s++;

} else if (a == 4) { System.out.println("第" + s + "张票,4号窗口出售");
                s++;
                }
}
}}但是这样会 卖的很乱   怎么样才可以实现 4个窗口 卖一共100张票呢 比较迷茫 这个线程应该怎么写

解决方案 »

  1.   

      实现Runnable接口。 好好查哈Api
       
      

  2.   

     还要创建一个Thread()实例来实现吧
      

  3.   

    class ChuangKo implements Runnable {
    int n = 100;// 默认票数为100 public ChuangKo(int n) {
    this.n = n;// 传递入票数
    } public ChuangKo() {
    } public void run() {
    while (n > 0) {
    System.out
    .println(Thread.currentThread().getName() + "卖出票号:" + n--);
    try {
    Thread.sleep(new java.util.Random().nextInt(500) + 500);// 纯程停顿一段时间,有利于看到售票的效果
    } catch (Exception e) {
    }
    }
    }
    }class Test {
    public static void main(String[] args) {
    ChuangKo c = new ChuangKo(200);
    new Thread(c).start();
    new Thread(c).start();
    new Thread(c).start();
    new Thread(c).start();
    try {
    Thread.currentThread().join();// 等以上线程完成,以便查看效果(如果主线程退出时,其它线程未完,就售不完所有的票)
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
      

  4.   

    try {
                Thread.currentThread().join();// 等以上线程完成,以便查看效果(如果主线程退出时,其它线程未完,就售不完所有的票)
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    这个可以不要。是所有的线程完后,虚拟机才关闭,一直没注意过这个问题。呵呵