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执行器