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();
        }
    }
    
    
    
  • 相关阅读:
    Mysql的相关命令
    设置数据窗口的过滤与排序
    org.springframework.web.servlet.DispatcherServlet noHandlerFound
    tomcatPluginV321.zip
    js获取modelandview的值
    cintanotes
    暗手机
    TASKCITY
    win commands
    book
  • 原文地址:https://www.cnblogs.com/lixyuan/p/13579918.html
Copyright © 2011-2022 走看看