public class TicketThread {

public static void main(String arg[])
{
new MyThread("一").start();
new MyThread("二").start();
new MyThread("三").start();
new MyThread("四").start();
}

public class MyThread extends Thread{

private int ticket=100;
public void run(){
while(ticket>0)
{
System.out.println(this.getName()+"号窗口已售出["+(ticket--)+"]张票");
}
 }
}}

解决方案 »

  1.   

    MyThread没有带参数的构造函数
    public class MyThread extends Thread{
           publuc MyThread(String name) { //here
               super(name);
           }           private int ticket=100;
            public void run(){
            while(ticket>0)
            {
                System.out.println(this.getName()+"号窗口已售出["+(ticket--)+"]张票");
            }
         }
        }
      

  2.   

    错误1、没有实现带String参数的构造方法
    错误2、静态方法调用了内部类的构造方法改成这样
    public class TicketThread {
        public static void main(String arg[])
        {
            new MyThread("一").start();
            new MyThread("二").start();
            new MyThread("三").start();
            new MyThread("四").start();
        }
    }class MyThread extends Thread{
        MyThread(String name) {
            super(name);
        }
        private int ticket=100;
        public void run(){
        while(ticket>0)
        {
            System.out.println(this.getName()+"号窗口已售出["+(ticket--)+"]张票");
        }
     }
    }
      

  3.   


    public class TicketThread {
    public static void main(String arg[]) {
    TicketThread tt = new TicketThread();
    tt.new MyThread("一").start();
    tt.new MyThread("二").start();
    tt.new MyThread("三").start();
    tt.new MyThread("四").start();
    } public class MyThread extends Thread {
    public MyThread(String name) { // here
    super(name);
    }
    private int ticket = 100; public void run() {
    while (ticket > 0) {
    System.out.println(this.getName() + "号窗口已售出[" + (ticket--)
    + "]张票");
    }
    }
    }}
      

  4.   


    Thread默认的构造方法不能用吗?
      

  5.   

    import java.util.concurrent.atomic.AtomicInteger;public class TicketThread implements Runnable {    AtomicInteger counter = new AtomicInteger(100);    public void run() {
            while (true) {
                int result = counter.getAndDecrement();
                if (result <= 0)
                    break;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(result + ":" + Thread.currentThread().getName() + "卖出 第 " + (101 - result)
                        + "张票");
            }
        }    public static void main(String[] args) {
         TicketThread th = new TicketThread();
            new Thread(th, "一号窗口").start();
            new Thread(th, "二号窗口").start();
            new Thread(th, "三号窗口").start();
            new Thread(th, "四号窗口").start();
        }
    }楼主想实现的是这样的效果嘛?看看这个程序
      

  6.   


    public class TicketThread {
        
        public static void main(String arg[])
        {   
         TicketThread t = new TicketThread();
            t.new MyThread("一").start();
            t.new MyThread("二").start();
            t.new MyThread("三").start();
            t.new MyThread("四").start();
        }
        
        private class MyThread extends Thread{
            
            private int ticket=100;
            public MyThread(String string) {
                  super(string);
    }
    public void run(){
            while(ticket>0)
            {
                System.out.println(this.getName()+"号窗口已售出["+(ticket--)+"]张票");
            }
           }
        }}注: 1.MyThread 要有带参构造函数
         2.同一个Java文件里面只能有一个 public的类
         3.main 函数运行需要所在类的实例
      

  7.   

    恩 严格说是需要原子操作来解决并发冲突的,顺便纠正下我的第 3 点 因为是内部类 所以这里的 new MyThread("string") 应该看成是TicketThread 的一个方法 所以需要 TicketThread 的实例来调用这个方法。