You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.1 KiB
125 lines
3.1 KiB
package com.example.jmacro.wjdr;
|
|
|
|
import cn.hutool.core.thread.ThreadUtil;
|
|
import com.example.jmacro.wjdr.demo.DemoThread;
|
|
import com.example.jmacro.wjdr.util.Logger;
|
|
|
|
import java.awt.*;
|
|
import java.io.File;
|
|
|
|
/**
|
|
* 主线程
|
|
*
|
|
* @author wangbing
|
|
* @version 0.0.1
|
|
* @since 1.8
|
|
*/
|
|
public class JMainService {
|
|
|
|
private static JMainService instance;
|
|
|
|
private JMacroThread thread;
|
|
|
|
private JMainService() throws AWTException {
|
|
// 脚本初始化
|
|
Logger.info("初始化脚本");
|
|
jMacro = new JMacro();
|
|
thread = new DemoThread(jMacro);
|
|
}
|
|
|
|
public static synchronized JMainService getInstance() throws AWTException {
|
|
if (instance == null) {
|
|
JMainService.instance = new JMainService();
|
|
}
|
|
return instance;
|
|
}
|
|
|
|
public JMacroThread getThread() {
|
|
return thread;
|
|
}
|
|
|
|
public JMacro getMacro() {
|
|
return jMacro;
|
|
}
|
|
|
|
/**
|
|
* 脚本对象
|
|
*/
|
|
private final JMacro jMacro;
|
|
|
|
/**
|
|
* 服务运行状态
|
|
*/
|
|
private boolean run;
|
|
|
|
public static void start() throws AWTException {
|
|
// 启动服务
|
|
Logger.info("启动服务");
|
|
JMainService.getInstance().run = true;
|
|
// 启动后台线程
|
|
JMainService.getInstance().serviceThread.start();
|
|
}
|
|
|
|
public static void stop() throws AWTException {
|
|
Logger.info("停止服务");
|
|
JMainService.getInstance().run = false;
|
|
JMainService.getInstance().serviceThread.interrupt();
|
|
}
|
|
|
|
/**
|
|
* 设置图例路径
|
|
*
|
|
* @param legend 图例路径
|
|
*/
|
|
public void setLegend(File legend) {
|
|
if (this.jMacro != null) {
|
|
this.jMacro.setLegend(legend);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 服务线程
|
|
*/
|
|
public Thread serviceThread = new Thread() {
|
|
|
|
@Override
|
|
public void run() {
|
|
while (run) {
|
|
ThreadUtil.sleep(1000);
|
|
if (thread == null) {
|
|
Logger.error("脚本线程未设置");
|
|
continue;
|
|
}
|
|
thread.run();
|
|
// 立即执行
|
|
// if (noDelay) {
|
|
// if (schedule != null) {
|
|
// schedule.cancel(true);
|
|
// }
|
|
//
|
|
// noDelay = false;
|
|
// Logger.info("启动线程");
|
|
// schedule = TaskUtil.schedule(new MacroThread(jMacro), 0, TimeUnit.SECONDS);
|
|
// continue;
|
|
// }
|
|
// if (schedule != null) {
|
|
// continue;
|
|
// }
|
|
//
|
|
// if (DateUtil.isIn(DateUtil.date(), DateUtil.parse(workStart), DateUtil.parse(workEnd))) {
|
|
// int delay = RandomUtil.randomInt(5, 20);
|
|
// Logger.info("等待{}分钟后,重新启动线程", delay);
|
|
// schedule = TaskUtil.schedule(new MacroThread(jMacro), delay, TimeUnit.MINUTES);
|
|
// }
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* 启动入口
|
|
*/
|
|
public static void main(String[] args) throws AWTException {
|
|
new JMainService().start();
|
|
}
|
|
}
|