Java 如何在使用Executor接口时关闭套接字?
在为TCP连接创建新线程时,我尝试使用Executor接口创建一个高效的线程池。这是我的密码:Java 如何在使用Executor接口时关闭套接字?,java,multithreading,sockets,Java,Multithreading,Sockets,在为TCP连接创建新线程时,我尝试使用Executor接口创建一个高效的线程池。这是我的密码: ServerSocket server = new ServerSocket(20006); Socket client = null; Executor service = Executors.newCachedThreadPool(); boolean f = true; while(f){ client = server
ServerSocket server = new ServerSocket(20006);
Socket client = null;
Executor service = Executors.newCachedThreadPool();
boolean f = true;
while(f){
client = server.accept();
System.out.println("Connection established!");
service.execute(new ServerThread(client));
}
我的问题是,当线程处于非活动状态并已从线程池中删除时,如何关闭套接字?将套接字的引用传递给
ServerThread
的构造函数,然后在run()
方法的最后一行调用socket.close()
:
public class ServerThread implements Runnable // or extends Thread
{
private Socket socket;
public ServerThread(Socket socket)
{
this.socket = socket;
}
@Override
public void run()
{
// ...
socket.close();
}
}