Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.8k views
in Technique[技术] by (71.8m points)

java - Thread call from Abstract Class for child classes?

Hi so I have repetitive Code and want to get rid of it. I want to get rid of the scheduler call (scheduler.schedule(this::transition, 10, TimeUnit.SECONDS);) because its copy paste code. But I dont know how to put it in an Abstract Class so that it will be executed properly in every Stage. The "this::transition" makes it impossible for me.

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);
  }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Extract the scheduling business logic to some outer class and inject this into your Stage classes - this scheduler should provide some schedule method with at least one parameter - the reference to the method that should be scheduled


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...