這是我的代碼:這個同步爲什麼不起作用?
public class TestClass {
public static void main(String[] args) throws Exception {
Thread threadOne = new Thread(new SomeRunnable("x"));
Thread threadTwo = new Thread(new SomeRunnable("y"));
threadOne.start();
threadTwo.start();
}
}
public class SomeRunnable implements Runnable {
private String name;
public SomeRunnable(String name) {
this.name = name;
}
@Override
public void run() {
for(int i=0;i<50;i++) {
NameShouter.shoutName(name);
}
}
}
public class NameShouter {
public static void shoutName(String name) {
synchronized (System.out) {
System.out.print(name);
}
}
}
輸出我得到的是:
xxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
我期待的是System.out的將被同步,但事實並非如此。爲什麼?我怎樣才能讓這段代碼的工作,它會輸出:
XXXXXXXXXXX .... YYYYYYYY ....
什麼是有2個含義但強迫他們跑並不平行。 – 2014-11-22 09:07:16
@HamletHakobyan學習 – 2014-11-22 09:08:26
你可以學習更好的方法。 :) – 2014-11-22 09:11:40