一個簡單的服務器的經典例子:方法中最終變量聲明的作用是什麼?
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