【发布时间】:2017-06-16 07:45:42
【问题描述】:
我正在编写一个 JUnit 测试用例来验证一个线程中特定行的悲观读取不会锁定另一个线程中其他行的选择调用。
请看下面的伪代码:
public test(){
service a = new service(entitymanager1);
entitymanager1.beginTxn();
a.methodToLockRow1();//has pessimistic_read lock to select 1st row
new Thread(){
run(){
service a2 = new service(entitymanager2);
entitymanager2.beginTxn();
a2.methodToSelectRow2();//has no lock specified. only selects 2nd row
entitymanager2.commit();
}
}.start();
Thread.sleep(5000)
entitymanager1.commit();
}
我希望 a2.methodToSelectRow2() 执行而不等待 a.methodToLockRow1() 提交。但这并没有发生。
感谢您对此的任何帮助。
【问题讨论】:
-
你能说明你是如何真正锁定实体的吗?
标签: java multithreading jpa locking