Java 中併發執行的示例
import java.util.stream.IntStream;
public class Concurrent {
public static void printAndWait(String s) {
System.out.println(s);
try {
Thread.sleep(1000);
} catch (Exception e) {}
}
public static void main(String[] args) {
Thread myThread = new Thread() {
public void run() {
IntStream.range(1,32)
.forEach(x -> printAndWait(""+x));
}
};
myThread.start();
IntStream.range('a', 'z').forEach(x -> printAndWait(""+(char)x));
}
}
這將產生類似的輸出
a
1
b
2
c
3
等等,雖然結果可能會有所不同。這是因為 myThread
中的程式碼在不同的執行緒中作為主流同時執行。也就是說,範圍 1-32 由一個執行緒處理,範圍 az 由另一個執行緒處理。
由於執行緒之間沒有同步,因此無法保證首先執行哪一個,或者甚至確保它們將產生完全交織的結果。