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進行相應的處理 } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM