文档

Java™ 教程-Java Tutorials 中文版
问题和练习
Trail: Essential Classes
Lesson: Concurrency

问题和练习:并发

问题

  1. 你能将 Thread 对象传递给 Executor.execute 吗?这样的调用会有意义吗?

练习

  1. 编译并运行 BadThreads.java
    
    public class BadThreads {
    
        static String message;
    
        private static class CorrectorThread
            extends Thread {
    
            public void run() {
                try {
                    sleep(1000); 
                } catch (InterruptedException e) {}
                // Key statement 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);
            // Key statement 2:
            System.out.println(message);
        }
    }
    

    应用程序应打印出“Mares do eat oat”。是否保证始终这样做?如果不是,为什么不是呢?更改 Sleep 的两次调用的参数会有帮助吗?你如何保证在主线程中可以看到 message 的所有更改?

  2. 修改 Guarded Blocks 中的 producer-consumer 示例以使用标准库类而不是 Drop 类。

检查一下你的答案。


Previous page: For Further Reading
Next page: The Platform Environment