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를 사용하여 리소스를 잠그는 것입니다.
1 주문하고 맞으세요....
남은 재고: 6 판매 894남은 재고: 5 판매 895
남은 재고: 4 판매 896남은 재고: 3 판매 897
남은 재고: 2 판매 수량 898남은 재고: 1 판매 수량 899남은 재고: 0 판매 수량 900
위 내용은 SpringBoot에서 Redis를 전역 잠금으로 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!