使用的是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中,有两种主要的锁机制:synchronized和Lock。它们都是用来实现线程同步,防止数据竞争,确保并发环境下的数据一致性。 首先,synchronized是Java的关键字,由JVM直接支持,其底层实现依赖于操作系统原语,...
在Java并发编程中,Lock接口及其实现类是重要的同步机制,相比传统的synchronized关键字,提供了更细粒度的控制和更高的灵活性。本文将深入探讨JavaLock中的ReentrantLock(可重入锁)以及与其紧密相关的Condition...
【Java面试题】lock与synchronized区别
为了解决这两种或者其它的有关问题就可以使用 lock 来实现。 ### 6. lock 的方法和说明 void lock() 获取锁。如果锁不可用,出于线程调度目的,将禁用当前线程,并且在获得锁之前,该线程将一直处于休眠状态。 ...
Java lock同步锁是Java并发编程中的一种常见同步锁机制,主要用于解决多线程并发访问共享资源时的同步问题。在Java中,Lock是一个接口,而synchronized是Java中的关键字,两者都可以用于实现同步锁,但它们有着不同...
Java Lock接口是Java并发编程中一个重要的组成部分,它提供了一种更为灵活的锁机制,相比传统的`synchronized`关键字,Lock接口允许我们进行更细粒度的控制,包括可中断的锁等待、尝试获取锁以及定时等待等。...
解决 Win7 小键盘 NumLock 键失效的问题 在 Windows 7 操作系统中,小键盘的 NumLock 键是一个非常常用的功能键,但是有时它可能会失效,导致小键盘无法正常工作。这种情况下,很多人可能会认为是键盘坏了,但是...
Java锁机制Lock是Java并发编程中的一种同步机制,用于解决多线程安全问题。Lock机制是Java 1.5以后引入的显示锁机制,相比于传统的synchronized隐式锁机制,Lock机制提供了更灵活和高效的同步方式。 在Java中,Lock...
RedisLock.java
DistributedLock.java
在Java编程中,生产者-消费者问题是多线程并发控制的经典案例,用于模拟两种不同类型的线程(生产者和消费者)共享一个有限资源的情况。在这个问题中,生产者负责生成数据,而消费者则负责处理这些数据。为了确保...
演示如何通过java nio设计lock
Doorlock.java
Java提供了多种方式来解决这些问题,包括使用synchronized关键字、Lock接口和Atomic变量等。在本文中,我们将主要介绍如何使用Java Lock锁来实现流水线任务。 什么是流水线任务? 流水线任务是指一系列互相依赖的...
LocalLock.java