论坛首页 Java企业应用论坛

如何让在一个线程内DAO对象在一个时刻内只被调用一次?

浏览 9770 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (14) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-26  
首先,在线程的run方法里加synchronized没有作用,这个关键字是保证被访问的资源在同一时间只能被一个线程访问,其他的线程必须等到该线程访问完毕,并释放syn的锁资源的时候才能被允许访问。
其次,必须保证find和insert/update方法的一致性,只对find或insert等单独加synchronized是没有用的,想想a线程run的时候首先访问dao的find方法,b线程此时也要访问dao的find方法,因为find方法是同步的,b线程会等待到a线程执行完find方法后才能进入find方法,但是这个时候不能保证a线程按照执行顺序已经把数据insert到数据库了,所以,应该把find和insert放入同一个synchronized,才能保证不会有重复的数据被insert
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics