一个简单的服务器的经典例子:方法中最终变量声明的作用是什么?
class ThreadPerTaskSocketServer {
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(80);
while (true) {
final Socket connection = socket.accept();
Runnable task = new Runnable() {
public void run() {
handleRequest(connection);
}
};
new Thread(task).start();
}
}
}
为什么要Socket
声明为final
?是否因为处理请求的新Thread
可能会引用回该方法中的socket
变量,并导致某种ConcurrentModificationException
?
非常感谢。 – Finbarr 2010-05-09 20:28:02