type
status
date
slug
summary
tags
category
icon
password
分布式系统第一次作业
📝 题目:
安装jdk,安装maven,为maven设置阿里或腾讯镜像仓库,用
maven编译Helloworld版的java程序
(1)设计支持多客户端并发访问的向量计算服务器程序。
(支持向量点乘、向量又乘运算)
服务器端程序:ThreadPoolTest
测试结果
- 测试是否可以并发执行(最多允许8个客户同时访问)
核心线程响应(3)
等待队列(3)
4,5,6号进入等待队列。
非核心线程响应(2)
2.测试任意客户退出,等待队列的客户是否可以和服务器通信
7号退出并结束访问,4号加入,由非核心线程执行。
7号退出且服务器正常记录到退出信息。同理,若当前核心线程退出,则等待队列里的由退出核心线程执行。
3.测试超过8个客户访问程序
新加入的10号客户超出最大允许访问数量,程序使用默认拒绝策略,报错并关闭线程池。之后的客户无法再与服务器连接。
4.测试当线程池中的所有客户退出后,服务器退出。
🤗 总结归纳
在本次分布式系统的作业设计中,一个重要的部分是独立编写客户端和服务器端程序。这两个程序的运行方式是:首先启动客户端和服务器端程序,然后客户端程序向服务器发送连接请求。服务器端程序接收到这些请求后,会建立与请求客户端的连接,这个连接是通过Socket管道实现的。一旦连接建立,客户端就可以与服务器进行通信,即向服务器发送信息。当客户端输入'quit'时,此次连接将被关闭。
为了扩展服务器端,使其可以接收多个客户端请求,使用线程池技术。这个线程池是由Java ThreadPoolExecutor创建的,每一个连接的客户端都会被分配到一个线程。这意味着,服务器可以同时处理多个客户端请求。我通过多次运行客户端程序,模拟了多客户并发访问的场景。
本次作业学习了Java的一些基本操作,练习了Socket编程以及线程池的相关操作。是对分布式系统知识的一次综合应用。锻炼了学习新东西的能力。( •̀ ω •́ )y
📎 参考文章
- Author:XZY
- URL:https://xzy-blog.top/article/%E5%88%86%E5%B8%83%E5%BC%8F1
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!