gpt4 book ai didi

java - 自过期对象 - 任何更好的选择

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:57 25 4
gpt4 key购买 nike

请在下面找到我创建并打算用作自过期对象的类。

public class SelfExpiringObject {

private boolean expired;
// other properties

public void setValidity(final int seconds) {
new Timer().schedule(new TimerTask() {
public void run() {
expired = true;
}
}, TimeUnit.SECONDS.toMillis(seconds));
}

public boolean isExpired() {
return expired;
}
}

任何人都可以建议任何更好的选择吗?

想在规则引擎中使用它来处理事件。其中一种情况是当接收到事件时,将它们放入 session 中(使用具有自过期属性的对象)。我希望他们仅根据规则中设置的有效性参加 session 。一旦它们过期,它们将从 session 中删除。

最佳答案

每个 Timer 创建一个线程,这是一个非常昂贵的对象。我建议你只在对象中有过期时间,并有一个线程定期删除过期的对象。

public class ExpiringObject {

private long expiresMS;
// other properties

public void setValidity(final int seconds) {
expiresMS = System.currentTimeMillis() + seconds * 1000;
}

public boolean isExpired() {
return System.currentTimeMillis() >= expireMS;
}
}

监控这些项目的线程可以在过期时更新 Drools。

关于java - 自过期对象 - 任何更好的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18076025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com