tomcat connector 以及对wait notify 思考

3 篇文章 0 订阅
2 篇文章 0 订阅



1. connector 接受 socket请求,会在维护的processor pool中创建或返回一个processor。 初始时processor的 socket available= false await 方法睡眠。当connector thread调用processor的assign方法时,初始socket唤醒等待此processor instance 锁的进程,available= true .   

2. processor thread wake up 开始处理socket parse request, parse header, populate request header response。


存在疑惑:代继续深入研究

正常情况 processor处理后请求回收到pool中应该已经做了回收处理。 connector从Pool中取 processor,connector thread应该不需要睡眠。 

(当前的分析:当connector再调用到之前的processor时,如果socket还没被处理即available=true则睡眠。 目前理解算是一次保障措施吧)  

总结:

1. Object.wait和Object.notify, Object.notifyAll 是对已经掌控的锁的操作,在调用时必须在synchronized{}块中调用。

2. wait方法释放锁并本线程放弃cpu时间进入等待队列。(本线程指包含wait方法的线程,或者包含wait方法的方法所在的线程。  Object只代表了锁对象)

3. notify是随机唤醒等待object锁的进程,执行notify并不是立刻就释放锁对象,而是在synchronized{}块结束后。

4. wait和sleep的区别 waitcpu控制权,同时主动释放锁。 而sleep方法不释放锁。

参考资料:

博客:http://blog.csdn.net/zyplus/article/details/6672775

书:how tomcat works

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值