关于servlet多线程序的疑问,请各位仁兄作答,谢谢。

03-03-12 hgwnet

1、在一本书上看到一个servlet中处理jdbc的一个例子:

synchronized(pstmt){

pstmt.cleanParameters();

pstmt.setString(1,"tet");

pstmt.setString(2,"ok"

}

对于pstmt的同步我不是很懂,按道理pstmt是在线程serive方法中创建的,应该每个pstmt对象均代表不同实例,这里有必要同步么?除非Connection创建的所有pstmt都共享stmt存储空间?!

2、现有一个类,其中有一个getRange(low,high)方法,目的是返回类中存储的Vector中的某段区间的值。现在将此类放入ServletContext中供各service线程访问。请问我有必要让getRange()成为synchronized方法么?

banq
2003-03-12 20:44

1.第一个问题要看上下文,不好回答,同步不同步一般都是程序员一念之差。

2.Vector是线程安全的,应该不需要。

hgwnet
2003-03-16 20:02

谢谢banq的作答。

不过似乎没有收到答案啊。我是一个初学者,不算入门。不过经过这两天的艰苦的学习,对于java的多线程问题有理解了很多。不过对于问题2,我还是请你解答一下,假设getRange()中还有其他的运算,会不会出现甲调用的返回值赋给乙调用呢?