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

Java并发问题
Java code

public class ThreadPre {

    
    public static void main(String[] args) throws IOException {
        ServerSocket socket = new ServerSocket(80);
        
        while(true){
            final Socket connection = socket.accept();
            
            Runnable task = new Runnable() {
                
                @Override
                public void run() {
                
                    handle(connection);
                    
                }

                
            };
            
            new Thread(task).start();
        }
    }

}

请问上面的代码socket为什么要用final声明?这是我在《Java并发编程实践》看到的例子,请解释下

------解决方案--------------------
不声明final的话,匿名类的函数没法直接引用该局部变量。