Java 在spring中实现一个调度程序
项目需要发生以下情况:Java 在spring中实现一个调度程序,java,spring,timer,scheduled-tasks,Java,Spring,Timer,Scheduled Tasks,项目需要发生以下情况: A类有一些对象(动态创建),它会生成这些对象以及与每个对象关联的时间间隔。此类仅需要在此时间间隔之后生成的对象。我需要实现一种机制,在类关联时间间隔之后为其提供对象。在时间间隔到期之前,它有时也可能需要一个特定的对象 以下是我所做的: 查看了,但没有发现它有用,因为我不希望为一个对象运行数千个线程。另外,我不想在一段时间后重复某项工作 我创建了一个线程B,它接收队列中的所有对象,有一个无限循环,不断检查对象的时间间隔与当前时间,如果时间间隔未过期,则返回 while (
A类
有一些对象(动态创建),它会生成这些对象以及与每个对象关联的时间间隔。此类仅需要在此时间间隔之后生成的对象。我需要实现一种机制,在类关联时间间隔之后为其提供对象。在时间间隔
到期之前,它有时也可能需要一个特定的对象
以下是我所做的:
- 查看了,但没有发现它有用,因为我不希望为一个对象运行数千个线程。另外,我不想在一段时间后重复某项工作
- 我创建了一个
线程B
,它接收队列中的所有对象,有一个无限循环,不断检查对象的时间间隔与当前时间,如果时间间隔
未过期,则返回
while (true) {
timerObject = queue.take();
if (timerObject.getEndTime() < System.currentTimeMillis()) {
//Do something
} else {
queue.put(timerObject);
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
while(true){
timerObject=queue.take();
if(timerObject.getEndTime()
这本身不是一个非常有效的实现。它有一个与之关联的逻辑错误。当对象数量非常少(如1或2)时,对象不在队列中,并且每当我尝试从队列中删除对象时,它都会显示未成功
,因为while循环始终拥有对象。因此,我不得不睡一觉来避免这种情况。当队列大小增加到10K左右时,我不想检查每个时间间隔
有没有简单有效的方法来实现这个解决方案。谢谢你的帮助 您可以使用,也可以使用来实现类似的功能。
您可以将它用于spring的并发框架(例如子类化)或核心java执行器