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
类。