ejemplo clásico de un servidor simple:¿Cuál es el efecto de la declaración de variable final en los métodos?
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();
}
}
}
¿Por qué el Socket
ser declarado como final
? ¿Es porque el nuevo Thread
que maneja la solicitud podría hacer referencia a la variable socket
en el método y causar algún tipo de ConcurrentModificationException
?
Muchas gracias. – Finbarr