Java中的執行緒互斥問題

2021-06-13 05:11:02 字數 1172 閱讀 1127

有如下**:

public class traditionalthreadsynchronized 

public void init() catch (interruptedexception e)

outputer.out("bbbbbbbbb");}}

}).start();

new thread(new runnable() catch (interruptedexception e)

outputer.out("aaa");}}

}).start();

} class outputer

system.out.println();

} public void out1(string name)

system.out.println();

}} }

}

當然,其中的out與out1方法都是可以互斥的,

然而如下**中

public class traditionalthreadsynchronized 

public void init() catch (interruptedexception e)

outputer.out("bbbbbbbbb");}}

}).start();

new thread(new runnable() catch (interruptedexception e)

outputer.out3("aaa");}}

}).start();

} static class outputer

system.out.println();

} public void out1(string name)

system.out.println();

}} public synchronized static void out3(string name)

system.out.println();

} }}

自然,當執行的時候,out與out3兩個方法是不能互斥的,而當執行緒1執行out1、執行緒2執行out3的時候,那麼執行緒將會可以互斥,

那麼怎麼使out與out3兩個方法也可以互斥呢,並不適用out1的方式?

求高人指點

java執行緒的互斥

多執行緒程式中的各個執行緒都是自由執行的,所以它們有時就會同時操作同乙個例項。這在某些情況下會引發問題。例如,從銀行賬戶取款時,餘額確認部分的 應該是像下面這樣的。if 可用餘額大於取款金額 private void init catch interruptedexception e outpure...

java網路程式設計 執行緒的互斥

執行緒互斥是指某一資源同時只允許乙個訪問者 程式呼叫 對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。引例 package cn.sundroid.thread public class testsynchronized private void init c...

java多執行緒 二 執行緒的互斥

多執行緒相對於單執行緒而言,大大的提高了硬體cpu的使用率,提高了處理的速度。任何事物帶來的都是兩面性的,多執行緒為我們帶來效能提高的同時也帶來了許多的安全性問題。說互斥之前,先說一下什麼是互斥,舉個列子,一天去atm機取錢,如果沒有互斥的話,你正取著錢突然有個人衝進來把你的錢搶走了。這時候你想,要...