首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

多个线程同时去一个表中取数据,怎么控制同一条数据不被2个线程取到

2012-08-29 
多个线程同时去一个表中取数据,如何控制同一条数据不被2个线程取到?有多个线程同时在一张表中取数据,表中

多个线程同时去一个表中取数据,如何控制同一条数据不被2个线程取到?
有多个线程同时在一张表中取数据,表中有个字段记录着该条数据是否已被取过,如果被取过就不再去取。
在并发的时候,如何防止不被2个线程同时取?
如果用synchronized时,那对该表的访问是不是只能是单线程了?

[解决办法]
存与取貌似都只能单线程吧,还是坐等大牛解释一下
[解决办法]
如果不需要修改写入没必要同步吧,不是很理解楼主的问题!
synchronized作用是在某一时刻只允许一个线程访问同步方法或块。并非就是单线程了!
[解决办法]
◎ 在并发的时候,如何防止不被2个线程同时取?
—— 基本上主要靠在数据库端做手脚,否则集群环境下无法保证。
—— 做法基本上是捆绑两句话在一个事务中,第一句Select...For Update,第二句修改作为标志的字段。

◎ 如果用synchronized时,那对该表的访问是不是只能是单线程了?
—— 不能说是单线程,应该说是串行化访问。Select .... For Update 也可以实现类似于串行化访问的效果。
[解决办法]
只取不改貌似不用做事务了吧。。

要是一定要加锁 那就悲观或者乐观锁吧
[解决办法]
我觉得应该是给表字段加锁,乐观悲观你需要自己斟酌

热点排行