文档

Java™ 教程
隐藏目录
问题和练习
教程: Java基本类
课程: 并发性

问题和练习: 并发性

问题

  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) {}
                // 关键语句 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的所有更改都可见?

  2. 修改保护块中的生产者-消费者示例,以使用标准库类而不是Drop类。

检查答案。


上一页:进一步阅读
下一页:平台环境