對於Java而言,我非常失望,因爲它不允許以下代碼以併發方式移動。當沒有同步時,兩個線程更頻繁地切換,但是當嘗試訪問同步方法時,在第二個線程獲得鎖之前,它將花費太長時間(如30秒),並且在第一個線程獲得鎖之前從第二個。什麼編碼可以照顧更好地共享鎖:java中的線程/同步
public synchronized static void i()
{
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] f)
{
Thread t = new Thread(new Runnable(){
public void run()
{
while(true)
i();
}});
t.setName("a: ");
Thread t2 = new Thread(new Runnable(){
public void run()
{
while(true)
i();
}});
t2.setName("b: ");
t.start();
t2.start();
}
結合exabrial和Chikei的答案,你有正確的答案。出於執行原因指出的原因,公平不能被保證。但是在交錯方面,我會和琪琪的建議一起使用一個鎖定,以保證一定的公平性。如果你想'完美'交錯,即線程B總是在線程A之後,線程A再次運行之前運行,那麼你需要一個不同的鎖定方案。 – brettw 2012-03-04 05:44:47
非常感謝,這兩種方法似乎工作得很好 – 2012-03-04 05:54:00