• 多线程并发测试demo


    1.测试类 mutiQuery.java

    /**
     * 多线程并发访问
     * @author HUAWEI
     *
     */
    public class mutiQuery {
            // 自定义工作线程
            private static class Worker extends Thread {
                private CyclicBarrier cyclicBarrier;
                private userController remoteHandler;
                public Worker(CyclicBarrier cyclicBarrier,userController remoteHandler) {
                    this.cyclicBarrier = cyclicBarrier;
                    this.remoteHandler = remoteHandler;
                }
                
                @Override
                public void run() {
                    super.run();
                    try {
                        System.out.println(Thread.currentThread().getName() + "开始等待其他线程");
                        cyclicBarrier.await();
                        System.out.println(Thread.currentThread().getName() + "开始执行");
                        // 工作线程开始处理,这里用Thread.sleep()来模拟业务处理
                        userController.getuserid(10);
                        System.out.println(Thread.currentThread().getName() + "执行完毕");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        
        public static void main(String[] args) {
            userController remoteHandler = userController.getinstance();
            int threadCount = 10;
            CyclicBarrier cyclicBarrier = new CyclicBarrier(threadCount);
            
            for (int i = 0; i < threadCount; i++) {
                System.out.println("创建工作线程" + i);
                Worker worker = new Worker(cyclicBarrier,remoteHandler);
                worker.start();
            }
        }
    }

    2.userController类

    package com.cn;
    
    import java.util.List;
    import com.cn.dao.userdao;
    import com.cn.db.usertable;
    
    import redis.clients.jedis.Jedis;
    
    public class userController {
        private static userdao dao = new userdao();
        private static Jedis jedis = new Jedis("127.0.0.1");
        private static userController test = new userController();
        private userController(){
            jedis.connect();
        }
        public static userController getinstance(){
            return test;
        }
        public static void getuserid(int id) {
            synchronized (jedis) {
                Object obj = readcache("findbyid("+id+")","hash");
                if(null == obj){
                    usertable iduser = findbyid(10);
                    String key = "findbyid(10)";
                    docache(key, iduser,"hash");
                    System.out.println("data from db");
                    System.out.println(iduser);
                    System.out.println("=========================
    ");
                }else{
                    String iduser = (String)obj;
                    System.out.println("data from cache");
                    System.out.println(iduser);
                    System.out.println("=========================
    ");
                }
            }
        }
        public static boolean allnovalue(Object obj){
            List<Object> arr = (List<Object>)obj;
            boolean flag = true;
            for(Object t:arr){
                if(t!=null){
                    flag = false;
                    break;
                }
            }
            return flag;
        }
        public static void docache(String key,Object data,String type){
            if(type.equals("hash")){
                usertable data1 = (usertable)data;
                jedis.hset(key,"userdata", data1.toString());
            }else if(type.equals("list")){
                
            }
            System.out.println("cache success!");
        }
        public static Object readcache(String key,String type){
            Object obj = null;
            if(type.equals("hash")){
                obj = jedis.hget(key,"userdata");
            }else if(type.equals("list")){
                
            }
            System.out.println("read success!");
            return obj;
        }
        public static usertable findbyid(int id){
            return dao.getuserbyid(id);
        }
        
        public static List<usertable> findall(){
            return dao.getallusers();
        }
    
    }
  • 相关阅读:
    CppUnit使用指南
    详细分析内存泄露检测
    设计模式之我的理解创建型模式:工厂方法
    MSXML2使用笔记
    【C++】函数指针
    设计模式之我的理解桥模式
    python 使用pyinstaller,pywin32打包.py成.exe应用程序
    python 获取当前时间的用法
    python 使用urllib.urlopen超时问题的解决方法
    python pip的安装流程,以及使用pip更新,卸载第三方模块
  • 原文地址:https://www.cnblogs.com/g177w/p/12511939.html
Copyright © 2020-2023  润新知