class SaleTicket extends Thread{
private int Ticket = 100;
private SaleTicket(){}
static SaleTicket t = new SaleTicket();
public static SaleTicket getIntance(){
return t;
}
public synchronized void run(){
while(Ticket>0){
System.out.println(Thread.currentThread().getName()+"..."+Ticket--);
}
}
}SaleTicket继承了Thread后,你在内部初始化了一个静态的SaleTicket类的事例化对象,静态实例对象在内存中只存在一份,但你在主函数中用了4个SaleTicket类的应用指向了同一个静态对象,当你调用start()方法后(一个线程被start()4次),JVM会抛出异常!你可以让SaleTicket实现Runnable借口,在主函数中创建一个SaleTicket对象,同时new 4个Thread类的Thread(Runnable target) 构造方法,并将SaleTicket的对象传进Thread(Runnable target) 中就好了!
代码如下:
class ticket implements Runnable//extends Thread
{
private int tick=100;
public void run()
{
while(true)
{
if(tick>0)
System.out.println(Thread.currentThread().getName()+"-------"+tick--);
//tick--;
//System.out.println("-------"+tick--);
}
}
}
class ThreadTicket
{
public static void main(String[] args)
{
ticket t=new ticket();