正在学习,寻找解决方案...
摘记:
1.tomcat默认最大工作线程 maxThreads=150(server.xml)
2.sqlserver2000默认最大工作线程255(可以介于 32 到 32767 )
3.单线程模式需创建多个实例对象,多线程模式只创建一个实例对象
2005-08-11
原来的servlet中定义了实例变量m_request,m_response变量,但是由于实现了SingleThreadMode接口,所以不会有线程安全的问题,这样的单线程方式会产生很多个servlet实例,导致服务器负载很大.
//启用多线程模式修改步骤
1.在servlet中去除 implements SingleThreadMode,禁止实现该接口,即禁用单线程模式.
2.删除servlet中的m_request,m_response实例变量的定义,而改为将service方法中request和response参数逐级传入servlet的各个子类中需要这些参数的方法中.
以下内容只要涉及到并发更新,都应该注意,而不管是单线程或多线程的并发.
如下:
(1).
select ModifyTime
from tbl1 with (updlock) -- with (updlock)通过“更新锁”来保证不会出现并发更新冲突.
where id = 75
...Thread.sleep(30000); //设定线程停滞30秒
(2).
if (oldModifyTime == newModifyTime) {
update tbl1
set name = "updateName"
where id = 75
}
在线程停滞的30秒钟期间,本用户通过updlock以独占方式将该条记录锁定,其它用户可以读取该记录,但不能也以独占方式来读取,更加不能修改该记录,这样可以确保在这个期间,该数据对本线程来说是静态的.
搜索关键字:
1.深入研究Servlet线程安全性问题
2.编写线程安全的JSP程序 徐春金
3.深入浅出Java多线程程序设计
4.java线程并发包util.concurrent的研究
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=2531546
[2005-08-01] [ZT]Java学习:Servlet/JSP配置入门
[2005-07-30] Java Servlet和JSP教程(9-10)
[2005-07-15] java servlet的中文乱码
[2005-07-30] Java Servlet和JSP教程(6-8)
[2005-07-15] java servlet的中文乱码问题