欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

怎么實現MainStarter

本篇內容主要講解“怎么實現MainStarter”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么實現MainStarter”吧!

創(chuàng)新互聯公司專注于企業(yè)成都全網營銷推廣、網站重做改版、湘潭網站定制設計、自適應品牌網站建設、H5開發(fā)商城網站定制開發(fā)、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為湘潭等各大城市提供網站開發(fā)制作服務。

Quartz觸發(fā)器配置

從觸發(fā)器中配置一個通用觸發(fā)MainStarter

<bean id="mainStarter" class="com.zb.timer.MainStarter" >
</bean>
    
<bean id="mainStarterDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	<property name="targetObject" ref="mainStarter" />
	<property name="targetMethod" value="run" />
	<property name="concurrent" value="false" />
</bean>
<bean id="mainStarterTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
	<property name="jobDetail" ref="mainStarterDetail" />
	<property name="startDelay" value="10000" />
	<property name="repeatCount" value="0" /> 
</bean>
	
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="triggers">
		<list>
			<ref bean="mainStarterTrigger" />  
		</list>
	</property>
</bean>

統一任務處理

MainStarter的實現

主要是任務中心來執(zhí)行的

public class MainStarter{

	// 任務中心
	private TaskCenter taskCenter;
	
	public void setTaskCenter(TaskCenter taskCenter) {
		this.taskCenter = taskCenter;
	}

	public void run() {
		if(taskCenter==null) {
			taskCenter = new TaskCenterSupport();
		}
		taskCenter.run();
	}
}
public interface TaskCenter {
	// 加載任務
	public void loadTask(Task taskTracker);
	
	public List<Task> getTasks(); 
	
	public void run();
	
	public void terminate();
	
}

任務中心存儲任務,任務 Task 為代碼最終執(zhí)行

public abstract class Task extends Thread {
	private boolean isAlive = true;

	@Override
	public void run() {
		while (isAlive) {
			try {
				doRun();
			} catch (Exception e) { 
				logger.error("run task error.", e);
			}
		}
	}

	public void setAlive(boolean isAlive) {
		this.isAlive = isAlive;
	}

	// 子類業(yè)務需要實現此方法,方法中為具體業(yè)務
	protected abstract void doRun() throws Exception;
}

具體業(yè)務實現

TaskCenter 的實現類 TaskCenterSupport

public class TaskCenterSupport implements TaskCenter {
	private List<Task> tasks;
	
	public List<Task> getTasks() {
		return tasks;
	}

	public void loadTask(Task task) {
		if (tasks == null) {
			tasks = new ArrayList<>();
		}
		
		tasks.add(task);
	}
	
	public void run() {
		if(CollectionUtils.isNotEmpty(tasks)){
			for (Task task : tasks) {
				if(task != null) {
					task.setAlive(true);
					task.start();
				}
			}
		}
	}
	
	public void terminate() {
		if(CollectionUtils.isNotEmpty(tasks)){
			for (Task task : tasks) {
				if(task != null) {
					task.setAlive(false);
				}
			}
			
			tasks.clear();
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				logger.error(e.getMessage(),e);
				Thread.currentThread().interrupt();
			}
		}
	}
}

Task 的子類 ZBTask

public class ZBTask extends Task{ 
	
	public ZBTask () {
		TaskCenter taskCenter = TaskCenterSingleton.getInstance();
		taskCenter.loadTask(this);
	}
	
	public void doRun() throws Exception {
		/* 具體業(yè)務實現,這里就能會定時執(zhí)行,
		 * 若有需要還可以在此使用休眠,
		 * 這樣只會把此線程掛起,不影響其他 Task 子類的執(zhí)行
		 */
	}

}

到此,相信大家對“怎么實現MainStarter”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

文章標題:怎么實現MainStarter
網頁地址:http://www.chinadenli.net/article16/gocidg.html

成都網站建設公司_創(chuàng)新互聯,為您提供外貿網站建設ChatGPT微信小程序軟件開發(fā)網站改版定制開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都網站建設公司