发布时间:2025-12-09 11:53:50 浏览次数:2
/** * 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<Greeting> greetings = pluginManager.getExtensions(Greeting.class); ScheduledExecutorService executor = Executors.newScheduledThreadPool(10); for (final Greeting greeting : greetings) { final FutureTask<String> stringFutureTask = new FutureTask<String>(new Callable<String>() { @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("方法正常执行"); } }}