java中通用的线程池实例代码

java中通用的线程池实例代码

在日常学习、工作和生活中,大家对java都再熟悉不过了吧,下面是为大家整理的java中通用的线程池实例代码,希望对大家有所帮助。

复制代码 代码如下:

package com.smart.frame.task.autoTask;

import java.util.Collection;

import java.util.Vector;

/**

* 任务分发器

*/

public class TaskManage extends Thread

{

protected Vectortasks = new Vector();

protected boolean running = false;

protected boolean stopped = false;

protected boolean paused = false;

protected boolean killed = false;

private ThreadPool pool;

public TaskManage(ThreadPool pool)

{

this.pool = pool;

}

public void putTask(Runnable task)

{

tasks.add(task);

}

public void putTasks(Runnable[] tasks)

{

for (int i = 0; i < tasks.length; i++)

this.tasks.add(tasks[i]);

}

public void putTasks(Collectiontasks)

{

this.tasks.addAll(tasks);

}

protected Runnable popTask()

{

if (tasks.sixx() > 0) return (Runnable) tasks.remove(0);

else return null;

}

public boolean isRunning()

{

return running;

}

public void stopTasks()

{

stopped = true;

}

public void stopTasksSync()

{

stopTasks();

while (isRunning())

{

try

{

sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

}

}

}

public void pauseTasks()

{

paused = true;

}

public void pauseTasksSync()

{

pauseTasks();

while (isRunning())

{

try

{

sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

}

}

}

public void kill()

{

if (!running) interrupt();

else killed = true;

}

public void killSync()

{

kill();

while (isAlive())

{

try

{

sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

}

}

}

public synchronized void startTasks()

{

running = true;

this.notify();

}

public synchronized void run()

{

try

{

while (true)

{

if (!running || tasks.si ze() = = 0)

{

pool.notifyForIdleThread();

this.wait();

}

else

{

Runnable task;

while ((task = popTask()) != null)

{

task.run();

if (stopped)

{

stopped = false;

if (tasks.sixx() > 0)

{

tasks.clear();

System.out.println(Thread.currentThread().getId() + ": Tasks are stopped");

break;

}

}

if (paused)

{

paused = false;

if (tasks.sixx() > 0)

{

System.out.println(Thread.currentThread().getId() + ": Tasks are paused");

break;

}

}

}

running = false;

}

if (killed)

{

killed = false;

break;

}

}

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

return;

}

}

}

复制代码 代码如下:

package com.smart.frame.task.autoTask;

import java.util.Collection;

import java.util.Iterator;

import java.util.Vector;

/**

* 线程池

*/

public class ThreadPool

{

protected int maxPoolSize = TaskConfig.maxPoolSize;

protected int initPoolSize = TaskConfig.initPoolSize;

protected Vectorthreads = new Vector();

protected boolean initialized = false;

protected boolean hasIdleThread = false;

public ThreadPool()

{

super();

}

public ThreadPool(int maxPoolSize, int initPoolSize)

{

this.maxPoolSize = maxPoolSize;

this.initPoolSize = initPoolSize;

}

public void init()

{

initialized = true;

for (int i = 0; i < initPoolSize; i++)

{

TaskManage thread = new TaskManage(this);

thread.start();

threads.add(thread);

}

}

public void setMaxPoolSize(int maxPoolSize)

{

this.maxPoolSize = maxPoolSize;

if (maxPoolSize < getPoolSize()) setPoolSize(maxPoolSize);

}

/**

* 重设当前线程数 若需杀掉某线程,线程不会立刻杀掉,而会等到线程中的事

* 务处理完成 但此方法会立刻从线程池中移除该线程,不会等待事务处理结束

*/

public void setPoolSize(int size)

{

if (!initialized)

{

initPoolSize = size;

return;

}

else if (size > getPoolSize())

{

for (int i = getPoolSize(); i < size && i < maxPoolSize; i++)

{

TaskManage thread = new TaskManage(this);

thread.start();

threads.add(thread);

}

}

else if (size < getPoolSize())

{

while (getPoolSize() > size)

{

TaskManage th = (TaskManage) threads.remove(0);

th.kill();

}

}

}

public int getPoolSize()

{

return threads.sixx();

}

protected void notifyForIdleThread()

{

hasIdleThread = true;

}

protected boolean waitForIdleThread()

{

hasIdleThread = false;

while (!hasIdleThread && getPoolSize() >= maxPoolSize)

{

try

{

Thread.sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

return false;

}

}

return true;

}

public synchronized TaskManage getIdleThread()

{

while (true)

{

for (Iteratoritr = threads.iterator(); itr.hasNext();)

{

TaskManage th = (TaskManage) itr.next();

if (!th.isRunning()) return th;

}

if (getPoolSize() < maxPoolSize)

{

TaskManage thread = new TaskManage(this);

thread.start();

threads.add(thread);

return thread;

}

if (waitForIdleThread() == false) return null;

}

}

public void processTask(Runnable task)

{

TaskManage th = getIdleThread();

if (th != null)

{

th.putTask(task);

th.startTasks();

}

}

public void processTasksInSingleThread(Runnable[] tasks)

{

TaskManage th = getIdleThread();

if (th != null)

{

th.putTasks(tasks);

th.startTasks();

}

}

public void processTasksInSingleThread(Collectiontasks)

{

TaskManage th = getIdleThread();

if (th != null)

{

th.putTasks(tasks);

th.startTasks();

}

}

}

复制代码 代码如下:

package com.smart.frame.task.autoTask;

public class TopTask implements Runnable

{

private ThreadPool pool;

public TopTask()

{

super();

}

public TopTask(ThreadPool pool)

{

super();

this.pool = pool;

}

@Override

public void run()

{

init();

start();

}

/**

* 初始化验证权限、参数之类

*/

public void init()

{

}

/**

* 开始自动任务

*/

public void start()

{

for (int i = 0; i < 10; i++)

{

pool.processTask(new BeginAuto());

}

}

}

/**

* 实现类

*/

class BeginAuto implements Runnable

{

@Override

public void run()

{

System.out.println(Thread.currentThread().getId() + "..................");

}

}

复制代码代码如下:

package com.smart.frame.task.autoTask;

import java.util.Collection;

import java.util.Vector;

/**

* 任务分发器

*/

public class TaskManage extends Thread

{

protected Vector tasks = new Vector();

protected boolean running = false;

protected boolean stopped = false;

protected boolean paused = false;

protected boolean killed = false;

private ThreadPool pool;

public TaskManage(ThreadPool pool)

{

this.pool = pool;

}

public void putTask(Runnable task)

{

tasks.add(task);

}

public void putTasks(Runnable[] tasks)

{

for (int i = 0; i < tasks.length; i++)

this.tasks.add(tasks[i]);

}

public void putTasks(Collection tasks)

{

this.tasks.addAll(tasks);

}

protected Runnable popTask()

{

if (tasks.sixx() > 0) return (Runnable) tasks.remove(0);

else return null;

}

public boolean isRunning()

{

return running;

}

public void stopTasks()

{

stopped = true;

}文章来源地址.yii666/blog/74008.html

public void stopTasksSync()

{

stopTasks();

while (isRunning())

{

try

{

sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

}

}

}

public void pauseTasks()

{

paused = true;

}文章地址.yii666/blog/74008.html

public void pauseTasksSync()

{

pauseTasks();

while (isRunning())

{

try

{

sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

}

}

}

public void kill()

{

if (!running) interrupt();

else killed = true;

}

public void killSync()

{

kill();

while (isAlive())

{

try

{

sleep(5);

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

}

}

}

public synchronized void startTasks()

{

running = true;

this.notify();

}

public synchronized void run()

{

try

{

while (true)

{

if (!running || tasks.si ze () == 0)

{

pool.notifyForIdleThread();

this.wait();

}

else

{

Runnable task;

while ((task = popTask()) != null)

{

task.run();

if (stopped)

{

stopped = false;

if (tasks.sixx() > 0)

{

tasks.clear();

System.out.println(Thread.currentThread().getId() + ": Tasks are stopped");

break;

}

}

if (paused)

{

paused = false;

if (tasks.sixx() > 0)

{

System.out.println(Thread.currentThread().getId() + ": Tasks are paused");

break;

}

}

}

running = false;

}

if (killed)

{

killed = false;

break;

}

}

}

catch (InterruptedException e)

{

TaskException.getResultMessage(e);

return;

}

}

}

转载请注明出处学文网 » java中通用的线程池实例代码

学习

最新七年级英语下册期末考试题

阅读(26)

本文为您介绍最新七年级英语下册期末考试题,内容包括英语四年级下册期末考试卷答案,五年级下册英语期末考试卷,三年级下册英语期末考试试卷。七年级是一个至关重要的.学年,大家一定认真复习期末考试,接下来看看为大家推荐的最新七年级英语

学习

口腔护理考试题及答案

阅读(27)

本文为您介绍口腔护理考试题及答案,内容包括口腔护理考试题库答案大全,有关口腔护理考试题,口腔护理操作技术试题及答案。无论是在学习还是在工作中,我们很多时候都不得不用到试题,试题是参考者回顾所学知识和技能的重要参考资料。那么一

学习

美丽的白水洋作文精选

阅读(27)

本文为您介绍美丽的白水洋作文精选,内容包括白水洋作文200个字,白水洋优秀作文400个字左右,白水洋作文600字。在日常学习、工作或生活中,大家最不陌生的就是作文了吧,通过作文可以把我们那些零零散散的思想,聚集在一块。一篇什么样的作文才

学习

机电一体化就业方向

阅读(30)

本文为您介绍机电一体化就业方向,内容包括机电一体化就业方向及工资多少,机电一体化就业方向2023,机电一体化就业方向适合女生吗。机电一体化技术是将机械技术、电工电子技术、微电子技术、信息技术、传感器技术、接口技术、信号变换技

学习

疯狂“HR”之小白诞生季

阅读(37)

“HR一般指人力资源。人力资源即人事,最广泛定义是指人力资源管理工作,包含六大模块:人力资源规划、招聘、培训、绩效、薪酬和劳动关系等。以下是整理的疯狂“HR”之小白诞生季,欢迎大家借鉴与参考,希望对大家有所帮助。

学习

国庆节的由来介绍

阅读(34)

本文为您介绍国庆节的由来介绍,内容包括国庆节的由来介绍50字,国庆节的由来介绍简短英语,国庆节的由来介绍历史。国庆节的基本简介“国庆”一词,本指国家喜庆之事,最早见于西晋。西晋的文学家陆机在《五等诸侯论》一文中就曾有“国庆独飨

学习

劳动节主题班会演讲稿通用

阅读(19)

本文为您介绍劳动节主题班会演讲稿通用,内容包括劳动节新闻稿主题班会,劳动节班会讲话稿,五一劳动节班会演讲稿。在我们平凡的学生生涯里,大家一定没少参加主题班会吧?主题班会是班主任根据教育、教学要求和班级学生的实际情况确立主题、

学习

五年级暑假数学作业本答案精选

阅读(29)

本文为您介绍五年级暑假数学作业本答案精选,内容包括五年级暑假数学作业本答案,五年级上册数学同步练习册答案,练习与测试数学五年级上册答案。暑假是同学们十分期待的日子,暑假的到来一定会令同学们欣喜若狂吧!为大家提供了五年级暑假数

学习

榜样6观后感通用

阅读(27)

本文为您介绍榜样6观后感通用,内容包括榜样6观后感言,榜样6观后感,榜样6观后感300字。观后感的介绍观后感,就是看了一部影片,连续剧或参观展览等后,把具体感受和得到的启示写成的文章。所谓“感”,可以是从作品中领悟出来的道理或精湛的思想

学习

最新虎年春联征集精选200副

阅读(28)

本文为您介绍最新虎年春联征集精选200副,内容包括最新虎年春联征集(精选200副),最新虎年春联有奖征集活动,最新有奖征集2022虎年春联。最新虎年春联征集(精选200副)

学习

《周书·崔谦传》阅读答案及译文

阅读(33)

在日复一日的学习、工作生活中,我们都不可避免地会接触到阅读答案,阅读答案是教师进行阅卷打分时的参考,有着不可或缺的作用。那么一般好的阅读答案都具备什么特点呢?下面是帮大家整理的《周书·崔谦传》阅读答案及译文,欢迎大家借鉴与参考,希

学习

崔涂的《除夜有怀》全诗及评析

阅读(40)

本文为您介绍崔涂的《除夜有怀》全诗及评析,内容包括除夜有怀崔涂原文翻译,巴山道中除夜书怀崔涂,崔涂古诗除夜有怀。在日复一日的学习、工作或生活中,应该没有人没接触过古诗词鉴赏吧?古诗词鉴赏,简单来说,就是这首古诗词描绘了一幅怎样的

学习

通信专业求职自荐信通用

阅读(32)

本文为您介绍通信专业求职自荐信通用,内容包括通信工程专业求职意向怎么写,通信技术专业求职自荐信,通信专业自荐。在当今不断发展的世界,我们越来越需要自荐信,写自荐信的时候要注意内容的完整。在写之前,可以先参考范文,以下是整理的通信

学习

社区计生工作总结精选

阅读(25)

本文为您介绍社区计生工作总结精选,内容包括社区计生工作总结简短,社区计生专干年终工作总结,2022年社区计生协会工作总结。一、工作总结的分类①按范围分,有班组总结、单位总结、行业总结、地区总结等。

学习

劳动节主题班会演讲稿通用

阅读(19)

本文为您介绍劳动节主题班会演讲稿通用,内容包括劳动节新闻稿主题班会,劳动节班会讲话稿,五一劳动节班会演讲稿。在我们平凡的学生生涯里,大家一定没少参加主题班会吧?主题班会是班主任根据教育、教学要求和班级学生的实际情况确立主题、

学习

期末检讨书通用

阅读(32)

本文为您介绍期末检讨书通用,内容包括期末考试检讨书模板,检讨书期末没搞好200字,大学期末作弊检讨书。在学习、工作或生活中出现了失误后,常常要求写检讨书,以对出现的过错进行悔过,写检讨书的时候要注意内容的完整。你还在为写检讨书而苦

学习

自信的事例通用

阅读(30)

本文为您介绍自信的事例通用,内容包括关于自信的事例4个,自信的事例简短,理论自信的具体事例。事例,事项例子,既可以是虚构的故事,也可以是客观事实。自信的事例在写作中是非常有帮助的,大家一起去积累素材吧!下面是整理的自信的事例,欢迎大

学习

厉害了我的国作文通用

阅读(22)

本文为您介绍厉害了我的国作文通用,内容包括厉害了我的国观后感1000字作文,厉害了我的国作文500个字,厉害了我的国作文最新。在日常学习、工作或生活中,大家都经常看到作文的身影吧,根据写作命题的特点,作文可以分为命题作文和非命题作文。

学习

结婚典礼主婚人致辞通用

阅读(37)

本文为您介绍结婚典礼主婚人致辞通用,内容包括结婚典礼主婚人致辞范文,结婚典礼主婚人致辞,主婚人致辞简短精辟。一、结婚登记的意义是什么

学习

酒店营销活动策划方案通用

阅读(29)

本文为您介绍酒店营销活动策划方案通用,内容包括酒店营销活动策划方案怎么做,酒店最新火爆营销方案,酒店度假主题营销活动策划方案。一、营销发展方向

学习

广州市房屋租赁合同模板通用

阅读(44)

本文为您介绍广州市房屋租赁合同模板通用,内容包括广州市房屋租赁合同模板官方,房屋租赁合同免费模板,房屋租赁合同标准范本模板。在人民愈发重视法律的社会中,合同起到的作用越来越大,在达成意见一致时,制定合同可以享有一定的自由。那么

学习

广州市店铺转让合同2022通用

阅读(39)

本文为您介绍广州市店铺转让合同2022通用,内容包括商业街店铺转让合同,店面出租出售合同,2022店铺转让协议。一、店铺转让注意事项