【发布时间】:2014-11-04 23:41:59
【问题描述】:
我在 Spring 中遇到一种情况,我正在将数据写入某个外部源, 现在在将数据写入外部源之前,
- 我拿了一把锁
- 读取对象
- 执行一些操作
- 写回项目。并解锁对象。
下面的代码大致解释了我是如何做到的。
//代码从这里开始
Lock lck = new ReentrantLock();
public void manipulateData(){
lck.lock();
//Object obj = read the data
//modify it
Write(obj)
lck.unlock();
}
//代码到此结束
现在在多线程环境中,当前发生的情况是在写调用之后我正在调用解锁,但在我的函数执行完成之前我的事务不会提交。但是,由于我正在调用解锁。其他线程获取锁并读取实际正确的数据。
所以我希望只有在事务提交时才应该由其他线程获得锁之类的东西。
我也不能使用程序化事务。
【问题讨论】:
标签: spring transactions locks