Tomcat服务器开发教程_实现多线程处理客户端请求

Tomcat服务器开发教程_实现多线程处理客户端请求

更新时间:2017年04月07日

  • 视频类型:java
  • 适合对象:Java学员、Java爱好者、开发人员
  • qq交流群:1461566656
一键免费下载

下载介绍

更多>>
Tomcat服务器开发教程_实现多线程处理客户端请求

【多线程处理请求】

(1)当前服务器存在的问题:

 A、当前服务器程序是单线程,只有一个 main 方法,只有一个主线程在运行

 B、当多个用户同时发送请求的时候,服务器在同一时间点只能处理一个请求

 C、这样会导致用户排队等待的现象

(2)解决方法:

 A、为了让服务器能够同时处理多个请求,可以引入一个线程处理一个请求

 B、多线程并发接收用户的请求,请求 A 和请求 B 之间互不干扰,互不等待,在内存角度来说,会有多个栈内存同时运

(3)在 core 包下定义 HandlerRequest 类实现 Runnable 接口,实现 run方法,在 run 方法中处理当前请求

 A、因为定义单独的线程处理请求,处理请求时需要客户端套接字对象(一个请求会对应一个客户端套接字对象),所以线程类需要含有客户端套接字对象的引用

private Socket clientSocket = new Socket();

public HandlerRequest(Socket clientSocket){

this.clientSocket = clientSocket;

}

public void run(){

//获取当前线程名称,记录开启线程日志

Logger.log(Thread.currentThread().getName()+”handler request”);

Thread.sleep(1000*60);//处理请求

}

(4)修改 BootStrap.java 在接收到客户端套接字对象之后

 A、创建线程对象,将客户端套接字对象传递给该线程

new Thread(new HandlerRequest(clientSocket)).start();

 B、*将接收和读取客户端消息的代码注释掉,以后要在 HandlerRequest 中处理

(5)启动服务器,测试服务器是否支持多线程并发处理

注:目前只要用户发送一次请求,则创建一个新的线程,这其实是一种不太好的设计方案,大家有时间可以设计一个线程池,这样可以提高访问效率。


    报名咨询
    免费教程
    面授学习
    直播学习
    夜校学习