Java定时任务超时处理

发布时间: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("方法正常执行");        }    }}
超时任务
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477