tocat 4.1中 HttpProcessor线程安全问题
2012-08-09 09:35
323 查看
1.将HttpProcessor 放入vector中,每次取子来一个处理请求,如果请求超过最大连接数,则直接socket.close();断开连接,tomcat4.x 不能实现连接的等待,因为processor一次只能
处理一个请求,如果两个请求同时使用同一个proccessor的话,HttpProcessor 是通过下面的方法来处理的
1.processor.assign(socket);将 socket 交给处理线程,processor中有一个socket实例域,用来保存添加进来的socket
2.for(;;){
循环等待socket,如果this.socket中有数据,则取出,进行处理,如果没有,则等待
Socket socket = await();
processor(socket);
}
processor 的多线程主要有两个方面组成,boolean avaliable,this.socket,还有就是锁
avaliable 标记 this.socket是否为空,如果为空,则可以向this.socket赋值,否则,则
要等待将上一个socket 处理完成,才可以向里面赋值,
assign:
void assign(){
Socket await(){
synchronized(lock){
synchronized(lock){
while(avalible){
while(!avaliable)
lock.wait();
lock.wait();
avalible = true;
notifyall();
this.socket = socket;
return this.socket;
vailable = false;
}
notifyall();
}
}
处理一个请求,如果两个请求同时使用同一个proccessor的话,HttpProcessor 是通过下面的方法来处理的
1.processor.assign(socket);将 socket 交给处理线程,processor中有一个socket实例域,用来保存添加进来的socket
2.for(;;){
循环等待socket,如果this.socket中有数据,则取出,进行处理,如果没有,则等待
Socket socket = await();
processor(socket);
}
processor 的多线程主要有两个方面组成,boolean avaliable,this.socket,还有就是锁
avaliable 标记 this.socket是否为空,如果为空,则可以向this.socket赋值,否则,则
要等待将上一个socket 处理完成,才可以向里面赋值,
assign:
void assign(){
Socket await(){
synchronized(lock){
synchronized(lock){
while(avalible){
while(!avaliable)
lock.wait();
lock.wait();
avalible = true;
notifyall();
this.socket = socket;
return this.socket;
vailable = false;
}
notifyall();
}
}
相关文章推荐
- 多线程调用epoll_wait()的线程安全问题分析 http://blog.csdn.net/lmh12506/article/details/7836827
- HttpUrlConnection与HttpClient的认识(七) -HttpClient的线程安全问题
- HttpUrlConnection与HttpClient的认识(七) -HttpClient的线程安全问题
- Httpclient的会话保持引起的线程安全问题
- Servlet和JSP的线程安全问题
- XMLHttpRequest的一个特别安全问题:
- ACE的ACE_Logging_Strategy类中的一个多线程安全问题的发现及解决过程
- struts1+struts2+spring实例化action的线程安全问题
- go语言映射map的线程协程安全问题
- (转)Netty : writeAndFlush的线程安全及并发问题
- 学习心得:关于C#中Queue的线程安全问题
- 0019 Servlet容器的实现:单实例多线程的线程安全问题【基础】
- 基础篇_线程 第4集 多线程的安全问题--解决之道同步代码块
- 为什么多线程会产生线程不安全问题?
- 测试SpringMVC可能出现的线程安全问题
- Java8新特性-014-传统时间API的线程安全问题
- struts中Action的线程安全与实例变量和静态变量的共享问题
- 关于Java集合类中线程安全与不安全问题笔录
- Servlet的线程安全问题
- java 多线程(线程间通信-解决安全问题)