jive2.6,有个问题

04-06-29 mac
读过jive2.6,有个问题一直百思不得其解,想请诸位帮忙解答:在dbforummessage.java , dbforumthread.java 等原码中多次出现带有同步关键字的方法,如:

private synchronized void saveToDb() {。。。。

private synchronized void deletePropertyFromDb(String name) {...

等db操作,当从多线程同步的角度来看,我觉得没有同步的必要,因为很多这样的方法并没有修改对象的成员变量,如saveToDb() 。

请请诸位帮忙解答一下,最好帮忙举个反例,比如去掉synchronized,在某些情况下,会出现怎样的问题, 多谢了!!

希望这个论坛越办越好!

banq
2004-06-30 11:44
>没有修改对象的成员变量

但是修改了共享的数据库数据啊,看来你没有意识到数据库是共享的数据,需要同步锁定修改,这涉及到数据库的ACID。

mac
2004-06-30 16:31
以前的确没有意识到这个问题,不过,我想请斑竹确认一下:多线程的应用,对于同一个数据库的修改,删除操作,需要在程序自身上实现DB操作的同步控制。对么?

那么,还有一个问题:DBMS本身不能提供这样的并发控制么?

多谢版竹的恢复!

banq
2004-07-01 10:12
是的,DB也提供,一个完整的过程需要两者结合。

mac
2004-07-01 13:34
请问斑竹有没有这方面的文章,站点推荐?

多谢!

猜你喜欢