zoukankan      html  css  js  c++  java
  • java 进程的参数和list的线程安全

    在网上看了很多帖子,关于进程的参数话题很少,在普通类中使用进程,并将数据放入进程中存在这数据安全的问题。尤其在并发的过程中,容易导致数据的不一致

    在类中方法中启用进程:

    可以通过线程池的方式和线程的方式

    public Robot analyRobot(String message){
    Robot robot = new Robot();
    try {
    message= message.trim();
    logger.info(message);
    // logger.info(message.substring(message.length()-3,message.length()));
    message =message.substring(message.indexOf("{"")-1,message.length()-2);
    JSONObject jsonObject = JSON.parseObject(message);
    temp.add(jsonObject);
    count++;
    if (count >30 | flag) {
    logger.info("缓存 :"+temp.size());
    RobotRun robotRun = new RobotRun(temp);
    robotRun.setList(temp);
    // pool.execute(robotRun); 线程池的方式
    new Thread(robotRun).start(); //线程的方式
    count=0;
    // logger.info("count :"+count);
    }
    }catch (Exception e){
    logger.error("analyze para fail");
    e.printStackTrace();
    }
    return robot;
    }

    线程中,可以通过重新构造函数的形式或者私有的静态边量的形式选择其一即可:其中在list的操作中以CopyOnWriteArrayList保障线程的安全

    public class RobotRun implements Runnable {

    @Autowired
    private MongoTemplate mongoTemplate;

    private static List<JSONObject> list = new CopyOnWriteArrayList<>();//静态变量

    public static Logger logger = LoggerFactory.getLogger(RobotRun.class);

    public RobotRun(List<JSONObject> list1) {//构造函数
    list=list1;
    mongoTemplate = (MongoTemplate) AllBeanService.getBean(MongoTemplate.class);
    }

    @Override
    public void run() {
    logger.info("list:"+list.size());
    mongoTemplate.insert(list,"robot");
    list.clear();
    logger.info("添加成功:"+list.size());
    }

    public void setList(List<JSONObject> list) {
    this.list = list;
    }
    }
  • 相关阅读:
    HTML_严格模式与混杂模式
    不要和一种编程语言厮守终生:为工作正确选择(转)
    iOS开发编码建议与编程经验(转)
    UTF-8 和 GBK 的 NSString 相互转化的方法
    UICollectionView 总结
    UIViewController的生命周期及iOS程序执行顺序
    objective-c 中随机数的用法
    clipsToBounds 与 masksToBounds 的区别与联系
    网络请求 代码 系统自带类源码
    iOS CGRectGetMaxX/Y 使用
  • 原文地址:https://www.cnblogs.com/youran-he/p/14759733.html
Copyright © 2011-2022 走看看