本篇內(nèi)容主要講解“怎么實(shí)現(xiàn)MainStarter”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么實(shí)現(xiàn)MainStarter”吧!
創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、湘潭網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為湘潭等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
從觸發(fā)器中配置一個(gè)通用觸發(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>
public class MainStarter{ // 任務(wù)中心 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 { // 加載任務(wù) public void loadTask(Task taskTracker); public List<Task> getTasks(); public void run(); public void terminate(); }
任務(wù)中心存儲(chǔ)任務(wù),任務(wù) 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è)務(wù)需要實(shí)現(xiàn)此方法,方法中為具體業(yè)務(wù) protected abstract void doRun() throws Exception; }
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(); } } } }
public class ZBTask extends Task{ public ZBTask () { TaskCenter taskCenter = TaskCenterSingleton.getInstance(); taskCenter.loadTask(this); } public void doRun() throws Exception { /* 具體業(yè)務(wù)實(shí)現(xiàn),這里就能會(huì)定時(shí)執(zhí)行, * 若有需要還可以在此使用休眠, * 這樣只會(huì)把此線程掛起,不影響其他 Task 子類的執(zhí)行 */ } }
到此,相信大家對(duì)“怎么實(shí)現(xiàn)MainStarter”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
文章標(biāo)題:怎么實(shí)現(xiàn)MainStarter
網(wǎng)頁(yè)地址:http://bm7419.com/article16/gocidg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、ChatGPT、微信小程序、軟件開發(fā)、網(wǎng)站改版、定制開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)