1
我试图创建多线程服务器,它将接收来自不同客户端的消息,然后发回消息。我正在使用执行服务器来管理 线程的创建。但我不确定我是否愿意这样做,我以前没有使用过执行者服务?而且我对这行有问题 executor.execute(new Handler(client));
处理程序是抽象的,无法初始化?如何解决它?执行服务解决绑定端口问题?它会让客户端的请求排队吗? THX提前tcp多线程服务器java
package serverx;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.logging.Handler;
public class ServerX {
public static void main(String [] args){
ExecutorService executor = Executors.newFixedThreadPool(30);
ServerSocket server;
try{
server= new ServerSocket(5555);
System.out.println ("Server started!");
while(true) {
try{
Socket client = server.accept();
//Thread t= new Thread (new Handler(client));
//t.start();
executor.execute(new Handler(client));
}
catch (IOException e) {
e.printStackTrace();
}
}
}catch (IOException el){
el.printStackTrace();
}
}
}
处理程序:
public class Handler implements Runnable{
private Socket client;
public Handler(Socket client){
this.client=client;}
public void run(){
//............
}
}
thx很多,我把它作为内部类(所以我删除公共类Handler实现Runnable),现在它的工作。所以服务器只会在30个线程之后停止,但是如果一段时间后它不能收到任何线程,我能否停止工作?如果它是可能的?或者我只能改变这个值“30” – chajka
@chajka不客气,你也可以接受我的答案感谢。 对于你的其他问题,其实我以前没做过。当你启动你的服务器时,它不会停止,直到你打破它。也许你可以考虑一个休息条件(在while循环中)满足你的需求。 – oko
完成,我不知道这个机会) – chajka