package indi.JavaLearn;
public class MultiThread {
private static int shared;
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
(new Thread() {
public void run() {
write2();
}
}).start();
}
}
public synchronized static void write2() {
int i = 0;
while (i < 2) {
shared++;
System.out.println("write," + Thread.currentThread().getId() + "," + String.valueOf(shared));
i++;
}
}
}
結果爲什麼我的多線程執行是單線程模式
write,12,1
write,12,2
write,15,3
write,15,4
write,16,5
write,16,6
write,14,7
write,14,8
write,13,9
write,13,10
你明白'synchronized'的作用嗎? – MadProgrammer
你能詳細說明問題是什麼嗎?編輯:將方法標記爲synchronized將基本上確保從不同線程執行該方法不會重疊。如果一個線程調用另一個線程仍在執行它,第二個線程將等待,直到第一個線程執行完畢。 –
Java中沒有「單線程模式」這樣的東西。此外,您可以從輸出中看到事件正在同時發生,因爲這些線程執行的順序不正確。 – dimo414