java多线程执行任务,处理共享成员变量的安全问题
Posted dali_lyc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进行相应的处理 } } }
以上是关于java多线程执行任务,处理共享成员变量的安全问题的主要内容,如果未能解决你的问题,请参考以下文章