SpringBoot에서 Redis를 전역 잠금으로 사용하는 방법

PHPz
풀어 주다: 2023-05-29 19:13:04
앞으로
1513명이 탐색했습니다.

1. 잠금 없이 리소스 경쟁을 시뮬레이션합니다

public class CommonConsumerService {
    //库存个数
    static int goodsCount = 900;
    //卖出个数
    static int saleCount = 0;
    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i < 1000; i++) {
            new Thread(() -> {
                try {Thread.sleep(2);} catch (InterruptedException e) {}
                if (goodsCount > 0) {
                    goodsCount--;
                    System.out.println("剩余库存:" + goodsCount + " 卖出个数" + ++saleCount);
                }
            }).start();
        }
        Thread.sleep(3000);
    }
}
로그인 후 복사

한 번 실행해 보세요. 마지막 몇 줄의 출력 결과는 다음과 같습니다. 남은 0개 항목 중 899개 항목만 매진되었습니다. 일부 품목은 누군가에 의해 판매된 것이 분명합니다.

...
남은 재고: 5개 판매 893
남은 재고: 5개 판매 894
남은 재고: 4개 판매 895
남은 재고: 2개 판매 896
남은 재고: 2 판매 수량 897
남은 재고: 1개 판매된 단위 수 898
남은 인벤토리: 0 판매된 단위 수 899

두 번째, redis를 사용하여 잠금

redis는 단일 스레드이며 직렬로 실행되므로 다음은 Redis를 사용하여 리소스를 잠그는 것입니다.

1 주문하고 맞으세요.

...

남은 재고: 6 판매 894

남은 재고: 5 판매 895

남은 재고: 4 판매 896

남은 재고: 3 판매 897

남은 재고: 2 판매 수량 898
남은 재고: 1 판매 수량 899

남은 재고: 0 판매 수량 900

위 내용은 SpringBoot에서 Redis를 전역 잠금으로 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!