我的目标是创建一个继承自Thread类的包含方法调用队列的对象,其run()方法每隔15秒弹出一个方法调用。虽然可以使用字符串、整数或字符在一个巨大的switch case语句中完成此操作,但我想知道是否有更优雅的解决方案。
是否有类似以下的解决方案?
是否有类似以下的解决方案?
public class Potato extends Thread{
Queue<Methods> methodsQueue = new LinkedList<Methods>();
public Potato(){}
run(){
methodsQueue.poll();//This would execute a method
}
//Methods of this class...
}
ScheduledExecutorService s = Executors.newScheduledThreadpool(numThreads);
如果您需要使用反射运行任意方法,则将它们提交到此服务就像将每个方法包装在自定义Runnable参数中并调用s.schedule(Runnable,long,TimeUnit)
一样容易。我无法想象有比这更优雅、更简便的解决方案来解决您的问题(至少在使用Java时是如此)。而且,它作为核心Java API的一部分已经被测试和使用自2004年以来。 - CodeBlind