旧项目代码socketServer代码太多,东一个西一个,很不方便维护。
我打算,把所有socketServer整合到一个代码里来,集中管理。
以前30socketServer接口,要写30个类,太多,入口不统一。
我想把入口统一,先一个类,然后根据不同client的请求,分派到不同业务类
去处理业务。
不知道,可不可行。
因为Socket client = server.accept()还; 是阻塞的。所以一时半会
还想不出,什么办法,把多个Socket client = server.accept(),放在同一个代码里,
能够,响应不能socket接口客户端请求。
大神,我这想法可以实现不。
如果能,要利用什么技术,实现。
java socketServer服务端可以把多个并成一个写
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
你知我知皆知 2024-08-04 16:41关注以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在Java中,我们可以使用线程池(ThreadPoolExecutor)和Callable接口来实现你所描述的功能。以下是一个简单的示例:
import java.util.concurrent.*; public class SocketServer { private ExecutorService executor = Executors.newFixedThreadPool(10); public void handleClient(Socket client) { Callable<Void> task = new RunnableTask(client); executor.execute(task); } private static class RunnableTask implements Callable<Void> { private final Socket client; public RunnableTask(Socket client) { this.client = client; } @Override public Void call() throws Exception { // 处理客户端请求 return null; } } public void start() { try (Socket client = new Socket()) { System.out.println("Accepting a connection..."); handleClient(client); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { SocketServer server = new SocketServer(); server.start(); } }在这个例子中,我们创建了一个固定大小的线程池,并且将每个Socket连接都分配给不同的线程进行处理。这样,即使有多个Socket同时到达,也可以保证不会出现冲突。同时,我们也实现了RunnableTask这个类,它继承了Callable接口,因此可以在多线程环境中运行。
注意:这个示例是基于Java SE 8或更高版本编写的。如果你正在使用的是其他版本的Java,可能需要对一些方法的参数类型或者返回值类型进行调整。
解决 无用评论 打赏 举报