【发布时间】:2015-09-17 14:48:39
【问题描述】:
我有以下代码:
(线程一次只能访问一个特定 obj 的 synchronized(someObj)。)
@Async
public void funcA() {
synchronized (someObj) {
//query (using spring) for **some_data_in_ES**
//check if **some_data_in_ES** is not 'nothing'
//update **some_data_in_ES** to be 'A' using spring
}
}
@Async
public void funcB() {
synchronized (someObj) {
//query (using spring) for **some_data_in_ES**
//check if **some_data_in_ES** is not 'nothing'
//update **some_data_in_ES** to be 'B' using spring
}
}
如果 funcA 控制了 synchronized(someObj) 并将 some_data_in_ES 更新为“A”,并且当 synchronized(someObj) 上的锁定空闲时,funcB 进入 synchronized(someObj) 并检查是否 some_data_in_ES 不是“无”。
是否有可能 B 将得到“无”或 elasticsearch 在更新为“A”后只会返回 some_data_in_ES?
【问题讨论】:
-
你有两个
funcA- 第二个应该是“funcB”吗?
标签: java multithreading spring elasticsearch real-time