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);
}
}
}
=============================
只是对自己进行同步,当然没有达到你的目的了。
可以这样:
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);
}
}
}
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!