synchronized(this)
=============================
只是对自己进行同步,当然没有达到你的目的了。
可以这样:
import java.io.*;class SellTicket implements Runnable{
  static Object synObj = new Object();
  static int i;
SellTicket(int i){
this.i = i;
}

public void run(){
while(i>0){
synchronized(synObj){
System.out.println(Thread.currentThread().getName()+"  Ticket #"+i+":    is selled!");
i--;
}
}
}
}public class ThreadTest{
public static void main(String[] args) throws Exception{
System.out.println("please input the number of the tickets:");
BufferedReader b = new BufferedReader(new InputStreamReader(System.in));
int i = Integer.parseInt(b.readLine());
 
Runnable r = new SellTicket(i);
Thread[] t = new Thread[(int)(Math.random()*10)];
for(int i1=0;i1<t.length;i1++){
t[i1] = new Thread(r);
t[i1].start();
//t[i1].join();
Thread.sleep(1);
}
}
}

解决方案 »

  1.   

    synchronized(Object)中的Object对象应是同一个对象吗?几个线程都用的一个Runnable,为什么不能用this 对几个线程的this都是相同的吗?
      

  2.   

    还是有问题,这是我刚刚运行后的结果,最后还是出现了负数.......D:\stu\test>java ThreadTest
    please input the number of the ticket
    100
    Thread-0  Ticket #100:    is selled!
    Thread-0  Ticket #99:    is selled!
    Thread-0  Ticket #98:    is selled!
    Thread-0  Ticket #97:    is selled!
    Thread-0  Ticket #96:    is selled!
    Thread-0  Ticket #95:    is selled!
    Thread-0  Ticket #94:    is selled!
    Thread-0  Ticket #93:    is selled!
    Thread-0  Ticket #92:    is selled!
    Thread-0  Ticket #91:    is selled!
    Thread-0  Ticket #90:    is selled!
    Thread-0  Ticket #89:    is selled!
    Thread-0  Ticket #88:    is selled!
    Thread-0  Ticket #87:    is selled!
    Thread-0  Ticket #86:    is selled!
    Thread-0  Ticket #85:    is selled!
    Thread-0  Ticket #84:    is selled!
    Thread-0  Ticket #83:    is selled!
    Thread-0  Ticket #82:    is selled!
    Thread-0  Ticket #81:    is selled!
    Thread-0  Ticket #80:    is selled!
    Thread-0  Ticket #79:    is selled!
    Thread-0  Ticket #78:    is selled!
    Thread-0  Ticket #77:    is selled!
    Thread-0  Ticket #76:    is selled!
    Thread-1  Ticket #75:    is selled!
    Thread-1  Ticket #74:    is selled!
    Thread-1  Ticket #73:    is selled!
    Thread-1  Ticket #72:    is selled!
    Thread-1  Ticket #71:    is selled!
    Thread-1  Ticket #70:    is selled!
    Thread-1  Ticket #69:    is selled!
    Thread-1  Ticket #68:    is selled!
    Thread-1  Ticket #67:    is selled!
    Thread-1  Ticket #66:    is selled!
    Thread-1  Ticket #65:    is selled!
    Thread-1  Ticket #64:    is selled!
    Thread-1  Ticket #63:    is selled!
    Thread-1  Ticket #62:    is selled!
    Thread-1  Ticket #61:    is selled!
    Thread-1  Ticket #60:    is selled!
    Thread-1  Ticket #59:    is selled!
    Thread-1  Ticket #58:    is selled!
    Thread-1  Ticket #57:    is selled!
    Thread-1  Ticket #56:    is selled!
    Thread-1  Ticket #55:    is selled!
    Thread-1  Ticket #54:    is selled!
    Thread-1  Ticket #53:    is selled!
    Thread-1  Ticket #52:    is selled!
    Thread-1  Ticket #51:    is selled!
    Thread-0  Ticket #50:    is selled!
    Thread-2  Ticket #49:    is selled!
    Thread-3  Ticket #48:    is selled!
    Thread-4  Ticket #47:    is selled!
    Thread-5  Ticket #46:    is selled!
    Thread-0  Ticket #45:    is selled!
    Thread-2  Ticket #44:    is selled!
    Thread-3  Ticket #43:    is selled!
    Thread-4  Ticket #42:    is selled!
    Thread-5  Ticket #41:    is selled!
    Thread-0  Ticket #40:    is selled!
    Thread-2  Ticket #39:    is selled!
    Thread-3  Ticket #38:    is selled!
    Thread-4  Ticket #37:    is selled!
    Thread-5  Ticket #36:    is selled!
    Thread-0  Ticket #35:    is selled!
    Thread-2  Ticket #34:    is selled!
    Thread-3  Ticket #33:    is selled!
    Thread-4  Ticket #32:    is selled!
    Thread-5  Ticket #31:    is selled!
    Thread-0  Ticket #30:    is selled!
    Thread-2  Ticket #29:    is selled!
    Thread-3  Ticket #28:    is selled!
    Thread-4  Ticket #27:    is selled!
    Thread-5  Ticket #26:    is selled!
    Thread-0  Ticket #25:    is selled!
    Thread-2  Ticket #24:    is selled!
    Thread-3  Ticket #23:    is selled!
    Thread-4  Ticket #22:    is selled!
    Thread-5  Ticket #21:    is selled!
    Thread-0  Ticket #20:    is selled!
    Thread-2  Ticket #19:    is selled!
    Thread-3  Ticket #18:    is selled!
    Thread-4  Ticket #17:    is selled!
    Thread-0  Ticket #16:    is selled!
    Thread-2  Ticket #15:    is selled!
    Thread-3  Ticket #14:    is selled!
    Thread-4  Ticket #13:    is selled!
    Thread-0  Ticket #12:    is selled!
    Thread-2  Ticket #11:    is selled!
    Thread-3  Ticket #10:    is selled!
    Thread-4  Ticket #9:    is selled!
    Thread-0  Ticket #8:    is selled!
    Thread-2  Ticket #7:    is selled!
    Thread-3  Ticket #6:    is selled!
    Thread-4  Ticket #5:    is selled!
    Thread-0  Ticket #4:    is selled!
    Thread-2  Ticket #3:    is selled!
    Thread-3  Ticket #2:    is selled!
    Thread-4  Ticket #1:    is selled!
    Thread-0  Ticket #0:    is selled!
    Thread-2  Ticket #-1:    is selled!
    Thread-3  Ticket #-2:    is selled!