BS架构 模拟

 1 public class BSServer {
 2     /*
 3         线程池的七大参数
 4         1.corePoolSize 线程池核心线程大小
 5         2.maximumPoolSize 线程池最大线程数量
 6         3.keepAliveTime 空闲线程存活时间
 7         4.TimeUnit:
 8             unit 空闲线程存活时间单位
 9             keepAliveTime的计量单位
10         5.workQueue 工作队列
11         6.threadFactory 线程工厂
12         7.handler 拒绝策略
13     */
14     //  创建线程池对象
15     private  static ExecutorService pool = new ThreadPoolExecutor(3, 5, 6,
16             TimeUnit.SECONDS, new ArrayBlockingQueue<>(2), Executors.defaultThreadFactory(),
17             new ThreadPoolExecutor.AbortPolicy());
18 
19     public static void main(String[] args) {
20         try {
21             //  注册端口
22             ServerSocket serverSocket = new ServerSocket(8080);
23             //  创建一个循环接收多个客户端的请求
24             while (true) {
25                 Socket socket = serverSocket.accept();
26                 //  交给独立线程处理
27                 pool.execute(new ServerSocketRunnable(socket));
28             }
29         } catch (Exception e) {
30             e.printStackTrace();
31         }
32     }
33 }
 1 public class ServerSocketRunnable implements Runnable {
 2     private Socket socket;
 3     public ServerSocketRunnable(Socket socket){
 4         this.socket = socket;
 5     }
 6     @Override
 7     public void run() {
 8         try {
 9             //  响应消息给浏览器提示
10             PrintStream ps = new PrintStream(socket.getOutputStream());
11             //  相应HTTP协议格式数据,否则浏览器不识别
12             ps.println("HTTP/1.1 200 OK");
13             // 响应的数据类型;文本、网页
14             ps.println("Content-Type:text/html;charset=UTF-8");
15             // 必须发送一个空行
16             ps.println();
17             // 才可以响应数据回给浏览器
18             ps.println("<span style='color:red;font-size:100px'>《加油努力》</span>");
19             ps.close();
20         } catch (Exception e) {
21             System.out.println(socket.getRemoteSocketAddress() + "下线了~~");
22         }
23     }
24 }

 

posted @ 2024-01-31 05:56  小※兽  阅读(10)  评论(0编辑  收藏  举报