我正在研究java TimerTask Scheduler Application。我有一个主类作为服务,它作为调度程序运行。
我有TaskSchedule() extends TimerTask
类用于固定时间执行:
timer.scheduleAtFixedRate(new TaskSchedule(), ...)
TaskSchedule
的内部构造函数我有一个dataHelper
类,它与数据库交互以从数据库中获取和更新值。
在TaskSchedule
类中,我重写了TimerTask的run
方法。
在run方法中,我使用参数调用数据库助手调用:
@Override
public void run(){
dataHelper.fetchDataFromDB( ? )
}
这里是我提出的问题,我被困在设计中。我想将此参数保持为数据库动态。
一个解决方案我虽然是:
将数据库参数从服务传递到TaskScheduler到dataHelper。但我在设计层面寻找更好的解决方案。
答案 0 :(得分:0)
您可以使用共享变量,您可以在外部设置,也可以在“fetchDataFromDB”之前使用。你必须要关心同步。使用互斥锁来保护共享内存。 另一种解决方案是,你可以像侦听器一样使用somethink,每次你想从db中获取时,侦听器现在就会从中获取数据。