使用的是Spring中的事务管理方式,@Transactional(readOnly = false, propagation = Propagation.SUPPORTS)申明了接口,在用实现类中我加入了java.util.concurrent.locks.Lock的机制,不知道是@Transactional(readOnly = false, propagation = Propagation.SUPPORTS)由于这个导致lock锁失效还是我的lock锁代码有误,现贴出lock锁的代码部分。
Lock lock = new ReentrantLock();
lock.lock();
try {
MarkList markList = new MarkList();
markList.setTimestamp(new Date());
markList.setUserId(userId);
markList.setTargetId(targetId);
markList.setMarkCount(markCount);
markList.setMarkResidue(markCount);
if(overDate != null) {
markList.setOverDate(overDate.getTime());
}
markList.setMarkSource(markSource);
markList.setMarkStatus(markStatus);
this.add(userId, markCount);
session.save(markList);
} finally {
lock.unlock();
}
使用2个线程访问的时候,lock锁会失效,不知是怎么回事,用单独的main函数测试锁是有效的,使用到项目中锁就失效了,请教高手锁为什么会失效?
分享到:
相关推荐
Lock锁是对象锁,仅在同一对象中,锁才会生效。(不做论证) (以下场景皆为单例模式下运行) lock.lock()的加锁方式,会使后续请求的线程堵塞等待。(方案A) lock.tryLock()的加锁方式,不会堵塞,会立即返回加锁...
本文总结了Java中Lock的各种用法。
【Java面试题】lock与synchronized区别
JavaLock与Condition的理解ReentrantLock锁的简单使用技巧共5页.pdf.zip
而lock是用java类,用java可以实现 2.synchronized可以锁住代码块,对象和类,但是线程从开始获取锁之后开发者不能进行控制和了解;lock则用起来非常灵活,提供了许多api可以让开发者去控制加锁和释放锁等等。
主要介绍了java Lock接口详解及实例代码的相关资料,需要的朋友可以参考下
当前的PPT总共56页,从锁的介绍,到java锁(lock、synchronor、aqs)到分布式锁 redis、zk、数据库的悲观锁和乐观锁都有涉及,算是比较完整的一个PPT,适合涉及到锁相关的专题讲座,以及自学的PPT,后面有机会会开...
基础理论知识,描述lock和synchronized的区别和基础的理论,其中还有死锁等基础概念。
RedisLock.java
DistributedLock.java
演示如何通过java nio设计lock
主要介绍了Java Lock接口实现原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Doorlock.java
LocalLock.java
主要介绍了Java lock同步锁使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java多线程--避免同步机制带来的死锁问题及用Lock锁解决线程安全问题
在jdk1.5以后,JAVA提供了Lock类来实现和synchronized一样的功能,并且还提供了Condition来显示线程间通信。 Lock类是Java类来提供的功能,丰富的api使得Lock类的同步功能比synchronized的同步更强大。本文章的所有...
主要介绍了Java锁机制Lock用法,结合具体实例形式分析了Java锁机制的相关上锁、释放锁、隐式锁、显式锁等概念与使用技巧,需要的朋友可以参考下