zoukankan      html  css  js  c++  java
  • Redis 模拟秒杀

    创建线程池,准备好库存信息

    
    public class Applicaiton {
        public static ThreadPoolExecutor pool = new ThreadPoolExecutor(
                10,
                100,
                10,
                TimeUnit.SECONDS,new LinkedBlockingDeque<Runnable>()
        );
        public static void main(String[] args) {
            Jedis jedis = new Jedis("localhost", 6379);
            //jedis.auth()
            jedis.select(1); // 选择库1
            jedis.set("kill_num","50");
            jedis.del("kill_list");
            jedis.close();
            for(int i=0; i < 1000; i++) {
                pool.execute(new KillTask()); // 创建秒杀线程
            }
        }
    }
    
    
    
    

    创建线程任务类,实现秒杀商品任务线程

    
    public class KillTask implements Runnable {
    
        @Override
        public void run() {
            Jedis jedis = new Jedis("localhost", 6379);
            jedis.select(1); // 选择库1
            jedis.watch("kill_num","kill_list");
            int num = Integer.parseInt(jedis.get("kill_num"));
    
    
            if(num >  0) {
                Transaction transaction = jedis.multi(); // 开启事务
                transaction.decr("kill_num");
                transaction.rpush("kill_list","9483");
                transaction.exec(); // 关闭事务
            } else {
                Applicaiton.pool.shutdown();
            }
            jedis.close();
        }
    }
    
    
    
  • 相关阅读:
    结对
    汉堡 结对2.0
    《构建之法》第四章读后感
    复利计算单元测试
    实验一 命令解释程序的编写
    《构建之法》读后感
    复利计算 2.0
    了解和熟悉操作系统
    学习进度条
    perl的贪婪和非贪婪模式
  • 原文地址:https://www.cnblogs.com/lixyuan/p/13579918.html
Copyright © 2011-2022 走看看