我有一个程序,它从用户准备的文件中加载一些任务,并根据文件中显示的调度开始执行它们。
示例:taskFile.txt
Task1: run every hour
Task2: run every 2 seconds
...
TaskN: run every monday at 10:00
第一部分是好的,我使用ScheduledExecutorService解决了,我非常满意。任务按照应有的方式加载和运行。
现在,让用户通过GUI(在运行时)决定Task2应该每分钟运行一次,并且他想删除Task3。 我找不到任何方法访问池中的某个特定任务,以便删除/修改它。
所以我无法在运行时更新任务。当用户更改任务时,我只能修改taskFile.txt并重新启动应用程序,以便根据新更新的taskFile.txt重新加载所有任务。
您知道如何访问单个任务以修改/删除它吗?
或者甚至是一种删除一个给定任务的方法,因此我可以在池中插入一个新的,具有用户想要的修改。
由于
答案 0 :(得分:0)
这不优雅,但有效。
假设你需要10个线程,有时你需要管理一个特定的线程。
而不是拥有一个包含10个线程的池,使用10个池,每个池有一个线程,将它们保存在您喜欢的数据结构中,并在您想要修改thread_1时对pool_1进行操作。 可以从池中删除旧的Runnable并添加一个包含所需更改的新Runnable。
另外,放入池中的任何内容都是匿名的,不能直接管理。
如果有人有更好的解决方案......