package org.jeecg.boot.starter.lock.test; import org.jeecg.boot.starter.lock.annotation.JLock; import org.jeecg.boot.starter.lock.annotation.JRepeat; import org.jeecg.boot.starter.lock.annotation.LockConstant; import org.jeecg.boot.starter.lock.client.RedissonLockClient; import org.springframework.stereotype.Service; import javax.annotation.Resource; @Service public class LockService { @Resource private RedissonLockClient redissonLockClient; int n = 10; /** * 模拟秒杀(注解方式) */ @JLock(lockKey = "#productId", expireSeconds = 5000) public void seckill(String productId) { if (n <= 0) { System.out.println("活动已结束,请下次再来"); return; } System.out.println(Thread.currentThread().getName() + ":秒杀到了商品"); System.out.println(--n); } /** * 模拟秒杀(编程方式) */ public void seckill2(String productId) { redissonLockClient.tryLock(productId, 5000); if (n <= 0) { System.out.println("活动已结束,请下次再来"); return; } System.out.println(Thread.currentThread().getName() + ":秒杀到了商品"); System.out.println(--n); redissonLockClient.unlock(productId); } /** * 测试重复提交 */ @JRepeat(lockKey = "#name", lockTime = 5) public void reSubmit(String name) { try { Thread.sleep(1500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("提交成功" + name); } }