首页 > 解决方案 > 子类的抽象类的线程调用?

问题描述

嗨所以我有重复的代码,想摆脱它。我想摆脱调度程序调用 (scheduler.schedule(this::transition, 10, TimeUnit.SECONDS);) 因为它的复制粘贴代码。但我不知道如何将它放在抽象类中,以便在每个阶段都能正确执行。“this::transition”对我来说是不可能的。

public class Stage1 {
 private final ScheduledExecutorService scheduler  = Executors.newScheduledThreadPool(1);

public void transition() {
...
scheduler.schedule(this::transition, 10, TimeUnit.SECONDS);
  }
}

public class Stage2 {
 private final ScheduledExecutorService scheduler  = Executors.newScheduledThreadPool(1);

public void transition() {
...
scheduler.schedule(this::transition, 10, TimeUnit.SECONDS);
  }
}

public class Stage3 {
 private final ScheduledExecutorService scheduler  = Executors.newScheduledThreadPool(1);

public void transition() {
...
scheduler.schedule(this::transition, 10, TimeUnit.SECONDS);
  }
}

标签: javamultithreading

解决方案


将调度业务逻辑提取到某个外部类并将其注入到您的Stage类中 - 此调度程序应提供一些schedule具有至少一个参数的方法 - 对应调度的方法的引用


推荐阅读