/**
* jar主运行类
*
* @author LH
* @date 2021/12/17 9:04
*/
public class Main {
public static void main(String[] args) throws ExecutionException, InterruptedException {
// 定时任务定时启动
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getData();
}
}, new Date(), 3000);
}
public static void getData() {
// jar插件管理
JarPluginManager pluginManager = new JarPluginManager();
// 加载指定路径插件
pluginManager.loadPlugins();
// 启动指定插件
pluginManager.startPlugins();
// 执行插件
List greetings = pluginManager.getExtensions(Greeting.class);
ScheduledExecutorService executor = Executors.newScheduledThreadPool(10);
for (final Greeting greeting : greetings) {
final FutureTask stringFutureTask = new FutureTask(new Callable() {
@Override
public String call() throws Exception {
return greeting.getGreeting();
}
});
executor.execute(stringFutureTask);
try {
String s = stringFutureTask.get(5, TimeUnit.SECONDS);
System.out.println(s);
} catch (InterruptedException e) {
System.out.println("方法执行中断");
stringFutureTask.cancel(true);
} catch (ExecutionException e) {
System.out.println("Excution异常");
stringFutureTask.cancel(true);
} catch (TimeoutException e) {
System.out.println("方法执行时间超时");
stringFutureTask.cancel(true);
}
System.out.println("方法正常执行");
}
}
}