【问题标题】:ExecutorService invoke a method before and after each taskExecutorService 在每个任务之前和之后调用一个方法
【发布时间】:2016-12-23 23:25:47
【问题描述】:

如果我有:

ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);

运行 10 个线程:

scheduledExecutorService.scheduleAtFixedRate(thread, initialDelay, delay, TimeUnit.MILLISECONDS);

如何在每个任务执行前调用方法foo(),在每个任务完成后调用bar()

【问题讨论】:

标签: java multithreading threadpool executorservice


【解决方案1】:

您可以尝试使用 AspectJ 或 AOP 来破解某些东西。这会中断应用程序流程并使用自定义方法执行方面。

或者你在你的线程中调用foo()bar()

【讨论】:

  • 假设线程来自第三方库,我无法修改代码,我认为AOP也行不通?
  • 您可以覆盖线程和运行方法。执行foo()方法,。调用super.run()并执行bar()方法。
  • 你可以覆盖ScheduledExecutorService在线程被触发之前启动foo()方法,然后在bar()方法之后。
  • 这更像!除了我不知道在foo() 之后和bar() 之前要执行什么,因为我不是该课程的专家
  • 我也不是专家。你从Executors.newScheduledThreadPool(10) 得到了一个SchudeldThreadPoolExecutor。这意味着你必须覆盖这个类,我认为特别是调度方法。可运行或可调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多