Java处理JSONArray数组开多线程并且加Redis标识

@Autowired
StringRedisTemplate stringRedisTemplate;
public  void handleJSON(JSONArray data, int threadNum){
        int length = data.size();
        int tl = length % threadNum == 0 ? length / threadNum : (length
                / threadNum + 1);
        
        for (int i = 0; i < tl; i++) {
        	System.out.println("开了几个线程:"+i+"线程总数:"+tl);
            Integer end = (i+1)*threadNum;
            HandleThread thread = new HandleThread( data, i * threadNum, end > length ? length : end,type,supplierId,dbName);
            thread.start();
        }
        
        // 开始redis 标识
        String readGoods = UUID.randomUUID().toString();
        Map<String, Object> value = new HashMap<String, Object>();
        value.put("readGoods", "传入需要的判断标识");
        String valueString = JSONObject.toJSONString(value);
        stringRedisTemplate.opsForValue().set(readGoods, valueString, 45L, TimeUnit.MINUTES);
    }
 
    class HandleThread extends Thread {
        private JSONArray data;
        private int start;
        private int end;
 
        public HandleThread( JSONArray data, int start, int end) {
            this.data = data;
            this.start = start;
            this.end = end;
        }
        public void run(){
            //这里处理数据
        	JSONArray json = JSONArray.parseArray(JSON.toJSONString(data.subList(start, end)));
        		for (int i = 0; i < json.size(); i++) {
        			// 处理逻辑
        		}
    		}
        }
	public static void main(String[] args) throws Exception {
		// 获取Redis校验
    	Response response = new Response();
       if(redisGoods("Redis保存的标识") {
    	   return response.failure("数据读取中,请过会操作。。。");
       }
		JSONArray json = JSON.parseArray(str);
		handleJSON( json,  10000);
	}
	// Redis判断
	public Boolean redisGoods(String dbName) {
		String object = redisTemplate.opsForValue().get(dbName).toString;
		if(object !=null && object.contains(dbName)) {
    		return true;
    	}
        //Set tokenSet = stringRedisTemplate.keys("*");

       // Iterator<String> iterator = tokenSet.iterator();
       // JSONObject valueObject = null;
        //while (iterator.hasNext()){
            //try {
				//String token = iterator.next();
				//String value = stringRedisTemplate.opsForValue().get(token);

				//valueObject = JSONObject.parseObject(value);
				//if(valueObject !=null && valueObject.get("readGoods") !=null) {
					//if(dbName.equals(valueObject.get("readGoods")) ) {
						//return true;
					//}
						
				//}
			//} catch (Exception e) {
			//	return false;
			//}
        //}
        return false;
    }

redis 面试 https://blog.csdn.net/qq_35190492/article/details/102841400

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值