ví dụ cổ điển của một máy chủ đơn giản:Hiệu quả của việc khai báo biến cuối cùng trong các phương thức là gì?
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();
}
}
}
Tại sao nên Socket
được khai báo là final
? Có phải vì mới Thread
xử lý yêu cầu có thể tham chiếu trở lại biến số socket
trong phương pháp và gây ra một số loại ConcurrentModificationException
?
Cảm ơn rất nhiều. – Finbarr