日期:2014-05-20  浏览次数:20696 次

关于effective java2 第66条的程序

这个是书上的程序,会无限循环下去。
Java code

public class Test {
    private static boolean b;
    private static int i = 1;

    public static void main(String[] args) throws InterruptedException {

        Thread thread = new Thread(new Runnable() {

            @Override
            public void run() {
                while (!b) {
                    System.out.println(i);
                }
            }
        });
        thread.start();

        TimeUnit.SECONDS.sleep(1);
        b = true;
        i = 2;
        System.out.println(b);
    }
}


这是我写的例子。会中止线程。


------解决方案--------------------
谢谢楼主分享。 要是能稍加解释就更好啦。
------解决方案--------------------
要用server模式启动,此外去掉 System.out.println(),也就是尽量消除线程需要切换环境的可能性。

应该就可以看到无限循环的效果了。
------解决方案--------------------
探讨
server模式启动是啥意思哦。

------解决方案--------------------
探讨
恩,看到效果了。谢谢啊。