zoukankan      html  css  js  c++  java
  • java多线程执行任务,处理共享成员变量的安全问题

    java多线程执行任务时,为了避免任务的重复执行,可以通过synchronized关键字处理共享成员变量,具体代码如下:

      // 多线程处理任务方法
      private
    void processMultiTask(final List<LogStatTask> list, int threadCount) throws Exception {  
         // 根据设定的线程数处理任务列表   
        
    for (int i = 0; i < threadCount; i++) { TaskThread thread = new TaskThread(list); thread.start(); } }
      // 任务处理线程类
    class TaskThread extends Thread { private List<LogStatTask> taskList = null;
         // 根据线程类成员变量创建构造函数
    public TaskThread(List<LogStatTask> taskList) { super(); this.taskList = taskList; } public void run() { while (true) { LogStatTask task;
              // 锁住taskList任务表对象,确保只有一个线程正在操作它
    synchronized (taskList) {
                // 如果任务列表为空,则退出执行
    if (CollectionUtils.isEmpty(taskList)) { break; }
                // 从任务任务列表中取出一个待执行的任务,并从任务表中移除 task
    = taskList.remove(0); } // 释放掉对taskList的锁,以便其他线程对其操作,本线程则根据task进行相应的处理 } } }

  • 相关阅读:
    vsftpd不支持目录软链接的解决办法
    SVN添加忽略目录
    Mysql 默认编码问题
    php-fpm 信号
    基于MAVEN使用IDEA创建dubbo入门项目图文教程
    taotao商城遇到的问题
    git push后出错
    Mybatis逆向工程自动生成代码(Ubuntu18.04-idea环境)
    git add.后回退 代码丢失
    对象的共享
  • 原文地址:https://www.cnblogs.com/dali-lyc/p/7457715.html
Copyright © 2011-2022 走看看