# hy.common.tpool
![image](images/Relation.png)
### 定时任务的代码样例(XML配置举例)
```xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<import name="xconfig" class="java.util.ArrayList" />
<import name="job" class="org.hy.common.thread.Job" />
<import name="jobs" class="org.hy.common.thread.Jobs" />
<import name="servers" class="java.util.ArrayList" />
<import name="server" class="org.hy.common.net.ClientSocket" />
<!-- 任务配置信息 -->
<xconfig>
<job id="定时任务的标识">
<code>定时任务的标识</code>
<name>定时任务的名称</name>
<intervalType ref="this.$IntervalType_Minute"/> <!-- 按分钟间隔执行 -->
<!-- $IntervalType_Second 间隔类型: 秒 -->
<!-- $IntervalType_Minute 间隔类型: 分钟 -->
<!-- $IntervalType_Hour 间隔类型: 小时 -->
<!-- $IntervalType_Day 间隔类型: 天 -->
<!-- $IntervalType_Week 间隔类型: 周 -->
<!-- $IntervalType_Month 间隔类型: 月 -->
<!-- $IntervalType_Manual 间隔类型: 手工执行 -->
<intervalLen>10</intervalLen> <!-- 每10分钟执行一次 -->
<startTime>2011-06-01 00:00:00</startTime> <!-- 定时任务生效时间。多个开始时间用分号分隔 -->
<xid>JavaClass</xid> <!-- 定时任务执行哪个Java类 -->
<methodName>JavaMethod</methodName> <!-- 定时任务执行Java类中的哪个方法 -->
<initExecute>true</initExecute> <!-- 初始化是否立即执行。默认为:false。可选的 -->
<condition><![CDATA[:MI != 2]]></condition> <!-- 执行条件:不等于2分时才允许执行任务。可选的 -->
<!-- 执行条件的占位符:年份(:Y) -->
<!-- 执行条件的占位符:月份(:M) -->
<!-- 执行条件的占位符:日期(:D) -->
<!-- 执行条件的占位符:小时(:H) -->
<!-- 执行条件的占位符:分钟(:MI) -->
<!-- 执行条件的占位符:秒钟(:S) -->
<!-- 执行条件的占位符:年月日(:YMD),格式为YYYYMMDD 样式的整数类型 -->
<cloudServer>192.168.1.100:2021</cloudServer> <!-- 云服务上地址及端口。表示执行云端服务器上的任务。可选的 -->
</job>
<!-- 灾备机制的服务列表。可选的 -->
<servers id="DisasterRecoverys">
<server>
<constructor>
<String>192.168.1.101</String>
<int>9021</int>
</constructor>
</server>
<server>
<constructor>
<String>192.168.1.102</String>
<int>9021</int>
</constructor>
</server>
</servers>
<jobs id="JOBS" this="JOBS">
<disasterRecoverys ref="DisasterRecoverys" /> <!-- 灾备机制的服务列表。可选的 -->
<call name="shutdown" /> <!-- 停止所有定时任务。预防多次重复加载时的异常 -->
<call name="delJobs" /> <!-- 删除所有定时任务。预防多次重复加载时的异常 -->
<addJob ref="定时任务的标识01" /> <!-- 将定时任务添加到任务池中 -->
<addJob ref="定时任务的标识02" />
<addJob ref="定时任务的标识n" />
</jobs>
<!-- 开启定时任务 -->
<jobs id="JOBS" this="JOBS">
<call name="startup" />
</jobs>
</xconfig>
</config>
```
### 自定义任务及执行的代码样例
```java
/**
* 自定义任务
*/
public class MyTask extends Task<Object>
{
private static int $SerialNo = 0;
private synchronized int GetSerialNo()
{
return ++$SerialNo;
}
public MyTask()
{
super("任务类型标识");
}
@Override
public void execute()
{
try
{
// 自定义任务执行的动作
}
catch (Exception exce)
{
exce.printStackTrace();
}
finally
{
this.finishTask(); // 任务执行完成。如果不执行此方法:表示任务将循环往复的一直执行下去
}
}
@Override
public int getSerialNo()
{
return GetSerialNo(); // 任务的序号
}
@Override
public String getTaskDesc()
{
return "任务的描述信息";
}
}
/**
* 执行方式01:将任务组织成任务组后再执行
*/
public static void main(String [] args)
{
TaskGroup v_TaskGroup = new TaskGroup("任务组标识");
for (int v_Index=0; v_Index<100; v_Index++)
{
v_TaskGroup.addTask(new MyTask()); // 将任务添加到任务组中
}
v_TaskGroup.addTaskGroupListener(...); // 实现TaskGroupListener接口后,可在任务均完成时触发指定动作(可选的)
v_TaskGroup.startupAllTask(); // 执行任务组
}
/**
* 执行方式02:任务直接由线程池来执行
*/
public static void main(String [] args)
{
ThreadPool.getThreadInstance(new MyTask()).startupAndExecuteTask();
}
```
### 线程池参数配置
```java
// 以下均为默认值
ThreadPool.setMaxThread(100); // 线程池中最大线程数
ThreadPool.setMinThread(10); // 线程池中最小线程数
ThreadPool.setMinIdleThread(2); // 线程池中最小空闲线程数
ThreadPool.setIntervalTime(1000L); // 等待时间间隔(单位:毫秒)
ThreadPool.setIdleTimeKill(60L); // 空闲多少时间后线程自毁(单位:秒)
```
### 桌面版:线程池监控界面
```java
ThreadPool.setWatch(true); // 默认为:false
```
![image](images/ThreadPoolWatch.png)
### 网页版:线程池监控界面(支持集群)
访问网址格式为:http://IP:Port/服务名/analyses/analyseObject?ThreadPool=Y&cluster=Y
![image](images/ThreadPoolWatch_Web.png)
### 定时任务的监控界面
访问网址格式为:http://IP:Port/服务名/analyses/analyseObject?Job=Y
![image](images/Jobs.png)
### 定时任务灾备双活集群(支持云任务):总统模式
1. 定时任务的灾备集群由2台或多台服务组成。
2. 多台定时任务服务器工作时,在同一时间,只有一台Master服务有权执行任务。其它服务为Slave服务,没有执行任务的权限。
3. 当原Master50.89宕机时,50.241自动接管执行任务的权限,成为新的Master服务。
4. 当原Master50.89只时暂时无法访问时(如网络原因),服务本是正常时,50.241先自动接管执行任务的权限,暂时成为新的Master服务,当50.89网络恢复时,再将执行权限还给50.89。
5. 多台定时任务服务间,每1分钟监测一次心跳。
6. 当连续心跳3次(数量可配置)均发现原Master服务异常时,才进行权限转移动作。
7. 为了保证Master服务的性能,只有其它Slave服务对整体集群做心跳监测。Master服务不再对其它Slave服务做心跳监测。
下面的组网图,为某项目的实战组网结构。
![image](images/定时任务灾备双活集群.png)
### 定时任务灾备双活集群服务的监控页面
![image](images/定时任务灾备双活集群.监控页面.png)
没有合适的资源?快使用搜索试试~ 我知道了~
线程池、任务、任务组、任务池,定时任务的类库-hy.common.tpool.zip
共76个文件
java:38个
xml:9个
png:6个
需积分: 0 0 下载量 197 浏览量
2023-11-06
23:09:05
上传
评论
收藏 812KB ZIP 举报
温馨提示
线程池、任务、任务组、任务池,定时任务的类库-hy.common.tpool
资源推荐
资源详情
资源评论
收起资源包目录
线程池、任务、任务组、任务池,定时任务的类库-hy.common.tpool.zip (76个子文件)
hy.common.tpool-master
lib
fel-0.8.jar 165KB
.classpath 2KB
线程池_任务池_任务组的关系.vsd 68KB
Common.004.Mac.ThreadPool.sh 350B
.settings
org.eclipse.jdt.core.prefs 903B
org.eclipse.wst.common.component 321B
org.eclipse.wst.common.project.facet.core.xml 166B
org.eclipse.m2e.core.prefs 86B
pom.xml 6KB
src
test
java
org
hy
common
thread
junit
JU_Sleep_And_Time.java 647B
JU_Jobs.java 2KB
job.Config.xml 1KB
TestThreadTask.java 828B
JU20120522_TaskPool.java 2KB
ThreadPoolTest.java 1KB
TestThreadTask01.java 1KB
ThreadPoolTest01.java 1KB
cache
junit
CacheRichSample.java 428B
CacheRichSampleMetadata.java 585B
CacheRichTest.java 2KB
main
resources
META-INF
LICENSE.txt 11KB
MANIFEST.MF 246B
maven
cn.openapis
hy.common.tpool
pom.properties 53B
pom.xml 6KB
java
org
hy
common
thread
SysTimeTest.java 3KB
TaskPool.java 7KB
Job.java 42KB
TaskTypeTotal.java 4KB
ThreadReport.java 5KB
TaskGroup.java 14KB
JobReport.java 8KB
ThreadTaskQueue.java 3KB
event
ThreadPoolStopEvent.java 602B
TaskGroupEvent.java 769B
DefaultThreadPoolStopEvent.java 1KB
TaskGroupListener.java 480B
JobListener.java 229B
DefaultTaskGroupEvent.java 1KB
ThreadPoolStopListener.java 706B
ThreadBase.java 23KB
ThreadPoolStop.java 6KB
Jobs.java 28KB
ThreadPool.java 18KB
ui
WatchTableColumnIndex.java 2KB
ThreadPoolWatch.java 8KB
JobDisasterRecoveryReport.java 3KB
Task.java 11KB
ThreadRunStatus.java 2KB
ThreadControlStatus.java 2KB
cache
CacheQueue.java 3KB
Cache.java 9KB
CacheRich.java 4KB
LICENSE 11KB
Common.003.Win.ThreadPool.bat 544B
.idea
jarRepositories.xml 1KB
dictionaries 162B
vcs.xml 167B
misc.xml 528B
compiler.xml 536B
.gitignore 47B
encodings.xml 261B
Maven.Deploy.Mac.TPool.sh 820B
Maven.Deploy.Win.TPool.bat 836B
hy.common.tpool.jar 69KB
.project 1000B
.gitignore 9B
images
ThreadPoolWatch.png 50KB
Relation.png 18KB
定时任务灾备双活集群.png 189KB
定时任务灾备双活集群.监控页面.png 11KB
Jobs.png 116KB
ThreadPoolWatch_Web.png 21KB
hy.common.tpool-sources.jar 62KB
README.md 8KB
定时任务灾备双活集群.vsd 92KB
Maven.DeployToSonatype.Win.TPool.bat 22B
共 76 条
- 1
资源评论
武昌库里写JAVA
- 粉丝: 3253
- 资源: 1928
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于 SpringCloud 和 Vue3 的OA系统
- 软考高级项目管理师-项目采购管理思维导图
- WordsVector (1).ipynb
- yolov7 车牌检测 车牌识别 中文车牌识别 检测 支持双层车牌 支持12种中文车牌
- 20240429_112025.m4a
- "麦嘟学编程"似乎是一个与编程学习相关的品牌或社区名称,它可能是一个在线教育平台、博客、论坛或社交媒体群组等,旨在帮助人们学习编
- OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,由
- Redis入门基础篇+源码(springboot、maven)
- ChatGPT-4是由OpenAI开发的人工智能模型,是GPT(Generative Pre-trained Transform
- 91fdd461elb59a4ce8dfcfc46bc283a7.msi
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功