package com.gota.demo.lj;
import java.util.Timer;
import java.util.TimerTask;
public abstract class ScriptLoader {
	protected String fileName;
	private boolean isClosed;
	private Timer timer;
	private MyTimerTask task;
	/**
	 * 构造函数
	 * 
	 * @param fileName
	 *            脚本路径
	 * @param reloadTime
	 *            自动检查脚本更新间隔, 单位: 毫秒; 小于等于0则不自动更新
	 */
	public ScriptLoader(final String fileName, long reloadTime) {
		this.fileName = fileName;
		onCreate();
		if (reloadTime > 0) {
			task = new MyTimerTask();
			timer = new Timer("update timer");
			timer.schedule(task, 0, reloadTime);
		} else {
			reloadScript();
		}
	}
	/**
	 * 重新载入脚本
	 */
	public void reloadScript() {
		if (isClosed) return;
		onLoadScript();
		System.out.println("script update!");
	}
	/**
	 * 关闭脚本
	 */
	public void closeScript() {
		isClosed = true;
		if (task != null) task.cancel();
		if (timer != null) timer.cancel();
		
		onCloseScript();
	}
	
	/**
	 * 初始化脚本运行环境
	 */
	protected abstract void onCreate();
	
	/**
	 * 载入脚本文件 
	 */
	protected abstract void onLoadScript();
	
	
	/**
	 * 关闭脚本运行环境, 并停止自动更新线程 
	 */
	protected abstract void onCloseScript();
	/**
	 * 检查脚本更新的定时任务
	 */
	class MyTimerTask extends TimerTask {
		private FileChangedChecker checker;
		public MyTimerTask() {
			this.checker = new FileChangedChecker(fileName);
		}
		@Override
		public void run() {
			if (checker.checkByModifyTime()) {
				reloadScript();
			}
		}
	}
}
最近下载更多
                
                rohgeo     LV1
                2023年9月8日
            
            
        
                x15000926787     LV1
                2019年8月2日
            
            
        
                Song ling     LV6
                2019年6月25日
            
            
        
                a3870764722a     LV22
                2019年6月13日
            
            
        
                lvgaojian     LV1
                2019年5月23日
            
            
        
                kingkick20     LV1
                2018年2月8日
            
            
        
                最代码官方     LV168
                2017年6月11日
            
            
        
                watfgzs     LV21
                2014年11月30日
            
            
        
                zxwxiao     LV14
                2014年11月6日
            
            
        
                terryang     LV19
                2014年2月19日
            
            
        
最近浏览更多
                
                rohgeo     LV1
                2023年9月8日
            
            
        
                adimgaoshou     LV10
                2022年9月6日
            
            
        
                huangjie123456     LV5
                2022年4月22日
            
            
        
                hekewen1     LV7
                2021年5月6日
            
            
        
                329512801     LV28
                2020年5月26日
            
            
        
                zx8861     LV3
                2020年1月15日
            
            
        
                ljcute     LV1
                2020年1月7日
            
            
        
                x15000926787     LV1
                2019年8月2日
            
            
        
                lcjz99     LV11
                2019年7月3日
            
            
        
                Song ling     LV6
                2019年6月25日
            
            
        
    
                
                
                