JAVA技术体系全图- -| 回首页 | 2005年索引 | - -用JDK来生成jasperreports报表

关于JAVA线程安全问题- -

TagJAVA    线程安全    SERVLET                                          

正在学习,寻找解决方案...

摘记:
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的研究

- 作者: 钢琴狮 访问统计: 2005年08月9日, 星期二 12:12 加入博采

Trackback

你可以使用这个链接引用该篇文章 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的中文乱码问题

回复

评论内容: