एक सरल सर्वर क्लासिक उदाहरण:विधियों में अंतिम परिवर्तनीय घोषणा का असर क्या है?
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