书上说:
在main()中,建立一个AlwaysEven对象,它必须是final的,因为他要被一个继承自Thread的匿名内部类所访问,如果线程读出的值不是偶数,它将把这个值打印出来(以证明它捕获了对象的不稳定状态),并退出程序这里:
为什么要是final,不为final行不行...
还有...请教下怎么学习线程会好一点

解决方案 »

  1.   

    局部类访问的局部变量,必须被声明为final。这个是语法。
    eg。public class Test {    public void start() {
            final int t = 0; // start的局部变量
            
            class Test2 implements ActionListener{ //局部类 --内部类的一种
                public void actionPerformed(ActionEvent e) {
                    if(t==0){
                        System.out.print(t);
                    }
                }
            }
        }}
      

  2.   

    请找前面的帖子,大概有一周以上了
    这个是处于安全的考虑局部内部类要使用局部变量是需要变量是final的,出于安全的考虑