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 由另一个线程处理。
由于线程之间没有同步,因此无法保证首先执行哪一个,或者甚至确保它们将产生完全交织的结果。