Skip to content

yangpiena/hy.common.tpool

 
 

Repository files navigation

hy.common.tpool

image

定时任务的代码样例(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" />
		
		
		
		<!-- 任务配置信息 -->
		<!-- $IntervalType_Second  间隔类型: 秒      -->
		<!-- $IntervalType_Minute  间隔类型: 分钟    -->
		<!-- $IntervalType_Hour    间隔类型: 小时    -->
		<!-- $IntervalType_Day     间隔类型: 天      -->
		<!-- $IntervalType_Week    间隔类型: 周      -->
		<!-- $IntervalType_Month   间隔类型: 月      -->
		<!-- $IntervalType_Manual  间隔类型: 手工执行 -->
		<xconfig>
			
		    <job id="定时任务的标识">
		    	<code>定时任务的标识</code>
		    	<name>定时任务的名称</name>
		    	<intervalType ref="this.$IntervalType_Minute"/>  <!-- 按分钟间隔执行 -->
		    	<intervalLen>10</intervalLen>                    <!-- 每10分钟执行一次 -->
		    	<startTime>2011-06-01 00:00:00</startTime>       <!-- 定时任务生效时间 -->
		    	<xjavaID>JavaClass</xjavaID>                     <!-- 定时任务执行哪个Java类 -->
		    	<methodName>JavaMethod</methodName>              <!-- 定时任务执行Java类中的哪个方法 -->
		    	<initExecute>true</initExecute>                  <!-- 初始化是否立即执行。默认为:false -->
		    </job>
		    
		    
		    
		    <jobs id="JOBS" this="JOBS">
		    	<addJob ref="定时任务的标识01" />                  <!-- 将定时任务添加到任务池中 -->
		    	<addJob ref="定时任务的标识02" />
		    	<addJob ref="定时任务的标识n"  />
		    	
		    	<call name="startup" />                          <!-- 启动定时任务的调度任务 -->
		    </jobs>
			
		</xconfig>
		
	</config>

自定义任务及执行的代码样例

	/**
	 * 自定义任务
	 */
	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();
	}

线程池参数配置

	// 以下均为默认值
	ThreadPool.setMaxThread(100);       // 线程池中最大线程数
	ThreadPool.setMinThread(10);        // 线程池中最小线程数
	ThreadPool.setMinIdleThread(2);     // 线程池中最小空闲线程数
	ThreadPool.setIntervalTime(1000L);  // 等待时间间隔(单位:毫秒)
	ThreadPool.setIdleTimeKill(60L);    // 空闲多少时间后线程自毁(单位:秒)

打开线程池监控界面

	ThreadPool.setWatch(true);          // 默认为:false

image


本项目引用Jar包,其源码链接如下

引用 https://github.com/HY-ZhengWei/hy.common.base 类库

About

线程池、任务、任务组、任务池,定时任务的类库

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.6%
  • Other 0.4%