public class ThreadPre {
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(80);
while(true){
final Socket connection = socket.accept();
Runnable task = new Runnable() {
@Override
public void run() {
handle(connection);
}
};
new Thread(task).start();
}
}}
这是我在《Java并发编程实践》看到的例子,我的疑问是socket用final声明虽然是基本语法要求的,因为不声明final的话,匿名类的函数没法直接引用该局部变量。但是accept每次收到一个连接请求都会返回一个新的socket,那么声明成final的话,接受完第一个请求,返回第一个socket后,就不能改变这个引用了,怎么接受新的socket呢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货