Java教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本引入的改进,并可能使用已不再可用的技术。
有关Java SE 9及其后续版本中更新的语言功能的概述,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能和已删除或弃用选项的信息,请参阅JDK版本说明。
Thread对象传递给Executor.execute吗?这样的调用有意义吗?BadThreads.java:
public class BadThreads {
static String message;
private static class CorrectorThread
extends Thread {
public void run() {
try {
sleep(1000);
} catch (InterruptedException e) {}
// 关键语句 1:
message = "Mares do eat oats.";
}
}
public static void main(String args[])
throws InterruptedException {
(new CorrectorThread()).start();
message = "Mares do not eat oats.";
Thread.sleep(2000);
// 关键语句 2:
System.out.println(message);
}
}
该应用程序应该打印出"Mares do eat oats." 这句话。它能够保证始终如此吗?如果不能,为什么?改变两次Sleep的参数会有帮助吗?如何确保主线程中对message的所有更改都可见?
Drop类。