classico esempio di un server semplice:Qual è l'effetto della dichiarazione della variabile finale nei metodi?
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();
}
}
}
Perché il Socket
essere dichiarato come final
? È perché il nuovo Thread
che gestisce la richiesta potrebbe fare riferimento alla variabile socket
nel metodo e causare una sorta di ConcurrentModificationException
?
Grazie mille. – Finbarr