public class Thread1 extends Thread { public void run() {
synchronized(this) {
for (int i = 0; i < 55; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
} public static void main(String[] args) {
Thread1 ta = new Thread1();
Thread1 tb = new Thread1();
ta.start();
tb.start();
}
}
怎么得不到我想要的结果啊?他执行完是:
Thread-0 synchronized loop 0
Thread-0 synchronized loop 1
Thread-0 synchronized loop 2
Thread-0 synchronized loop 3
Thread-0 synchronized loop 4
Thread-0 synchronized loop 5
Thread-0 synchronized loop 6
Thread-1 synchronized loop 0
Thread-0 synchronized loop 7
Thread-1 synchronized loop 1
Thread-0 synchronized loop 8
Thread-1 synchronized loop 2
Thread-0 synchronized loop 9
Thread-1 synchronized loop 3
Thread-1 synchronized loop 4
Thread-1 synchronized loop 5
Thread-1 synchronized loop 6
Thread-1 synchronized loop 7
Thread-1 synchronized loop 8
Thread-1 synchronized loop 9而我想要的是:Thread-0 synchronized loop 0
Thread-0 synchronized loop 1
Thread-0 synchronized loop 2
Thread-0 synchronized loop 3
Thread-0 synchronized loop 4
Thread-0 synchronized loop 5
Thread-0 synchronized loop 6
Thread-0 synchronized loop 7
Thread-0 synchronized loop 8
Thread-0 synchronized loop 9
Thread-1 synchronized loop 0
Thread-1 synchronized loop 1
Thread-1 synchronized loop 2
Thread-1 synchronized loop 3
Thread-1 synchronized loop 4
Thread-1 synchronized loop 5
Thread-1 synchronized loop 6
Thread-1 synchronized loop 7
Thread-1 synchronized loop 8
Thread-1 synchronized loop 9
synchronized(this) {
for (int i = 0; i < 55; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
} public static void main(String[] args) {
Thread1 ta = new Thread1();
Thread1 tb = new Thread1();
ta.start();
tb.start();
}
}
怎么得不到我想要的结果啊?他执行完是:
Thread-0 synchronized loop 0
Thread-0 synchronized loop 1
Thread-0 synchronized loop 2
Thread-0 synchronized loop 3
Thread-0 synchronized loop 4
Thread-0 synchronized loop 5
Thread-0 synchronized loop 6
Thread-1 synchronized loop 0
Thread-0 synchronized loop 7
Thread-1 synchronized loop 1
Thread-0 synchronized loop 8
Thread-1 synchronized loop 2
Thread-0 synchronized loop 9
Thread-1 synchronized loop 3
Thread-1 synchronized loop 4
Thread-1 synchronized loop 5
Thread-1 synchronized loop 6
Thread-1 synchronized loop 7
Thread-1 synchronized loop 8
Thread-1 synchronized loop 9而我想要的是:Thread-0 synchronized loop 0
Thread-0 synchronized loop 1
Thread-0 synchronized loop 2
Thread-0 synchronized loop 3
Thread-0 synchronized loop 4
Thread-0 synchronized loop 5
Thread-0 synchronized loop 6
Thread-0 synchronized loop 7
Thread-0 synchronized loop 8
Thread-0 synchronized loop 9
Thread-1 synchronized loop 0
Thread-1 synchronized loop 1
Thread-1 synchronized loop 2
Thread-1 synchronized loop 3
Thread-1 synchronized loop 4
Thread-1 synchronized loop 5
Thread-1 synchronized loop 6
Thread-1 synchronized loop 7
Thread-1 synchronized loop 8
Thread-1 synchronized loop 9
synchronized(this) {
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
} public static void main(String[] args) {
Thread1 ta = new Thread1();
Thread1 tb = new Thread1();
try{
ta.start();
Thread.sleep(1000);
tb.start();
Thread.sleep(1000);
ta.join();
tb.join();}catch(Exception e){
}
}
}
二楼的程序更无趣to:楼主,想要你希望的结果,有很多办法
第一:
Thread1 ta = new Thread1();
Thread1 tb = new Thread1();
ta.start();
ta.join();
tb.start();
第二:
synchronized(this)
改为
synchronized(Thread1.class)
不过这种程序is awful!