首页 > 解决方案 > 在 spring 中防止 2 个不同线程的读锁定

问题描述

我有 3 种类型的用户,即 A、B 和 CI,正在读取 DB 列以获取最新的用户 ID,将其递增 1 并从存储库创建新的用户 ID。

 Request lastCreatedIdUserWise = requestRepository.findTopByUserIdOrderByCreateDateDesc(user.getUserId());
    Long requestSubscriptionId = 1L;
    if (lastCreatedRequestForSubscription != null) {
        // plus one the last created request id for subscription.
        requestSubscriptionId += lastCreatedRequestForSubscription.getShipRequestIdBySubscription();
    }
    request.setRequestIdBySubscription(shipRequestSubscriptionId);//this saves a new request with new Id

当新请求到达时,我需要为每个用户加锁。当用户 A 有多个请求时,需要锁定此进程(检索最大 ID 并保存新 ID) 当有不同用户(即 A 或 B 或 C)的请求时,让此流程继续(无需锁定)。

标签: javaspringjpasynchronizationlocking

解决方案


推荐阅读