使用JDK线程池方式创建多线程服务器 public void servic(){ while(true){ try { socket = serverSocket.accept(); //等待用户连接 executorService.execute(new Handler(socket)); //把执行交给线程池来维护 } catch (IOException e) { e.printStackTrace(); } } } 这里使用线程池维护对象的execute方法来执行工作任务。 我们只需要规定线程池的最大线程数量,其他的就都不需要关心了。 如果将线程池的数量设置为1: executorService=Executors.newFixedThreadPool(1); 然后开两个客户端,访问可以发现,和我们没有使用多线程没有区别,这正说明了线程池中只有一个线程。 测试: 使用线程池注意点 虽然使用线程池能大大提高服务器的并发性能,但他也存在一定的风险,比如多线程程序最容易产生的并发和死锁问题。 1、如果任务A需要同步等待任务B的结果,那么A不适合加入到线程池的工作队列中。防止这些如A一样的线程因不能获得B的结果,可能导致死锁。所以不一定要避免这种情况的发生,即使得线程任务尽量职责单一。 2、假设工作线程执行过程中被阻塞(如等待接收用户输入数据,但用户一直不输入,他已经离开了),导
您可能关注的文档
最近下载
- AP 统计模拟题.pdf VIP
- TZJSAE-电动汽车分布式驱动控制通用技术规范.pdf VIP
- 2023年武汉市江夏国有资产经营管理集团有限公司人员招聘考试参考题库及答案解析.docx VIP
- 环境温湿度及大气压力测试仪不确定度分析报告.pdf VIP
- (2025版)结直肠癌肠造口患者全程营养管理专家共识课件.pptx VIP
- 2024年济南高一下期中物理试卷.pdf VIP
- TYNBX 23-2020柠檬及其制品中柠檬苦素和诺米林的测定高效液相色谱法.docx VIP
- 最优化理论课件.pptx VIP
- 一种卧式脱水机.pdf VIP
- “文明的产生与早期发展”教学设计及反思【论文】.pdf VIP
原创力文档

文档评论(0)