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();
        }
    }
    
    
    
  • 相关阅读:
    MyBatis学习记录02篇
    Mybatis学习记录01篇
    项目路径问题
    项目01-JavaWeb网上书城01之工具类
    面试篇01
    创建多线程的方式
    关于web.xml
    快捷键----快速生成未实现的方法
    自动化学习-Day03
    自动化学习-Day02
  • 原文地址:https://www.cnblogs.com/lixyuan/p/13579918.html
Copyright © 2011-2022 走看看