gpt4 book ai didi

Java数据结构让一个方法只有在被调用N次后才会触发

转载 作者:行者123 更新时间:2023-12-01 12:46:00 25 4
gpt4 key购买 nike

什么数据结构可能适合用于仅在调用方法 N 次后触发某些操作?在类中使用计数器很简单,但我想知道是否有更好的方法来做到这一点。从某种意义上说,这有点像反向速率限制器。

for (int i = 0; i < 1000; ++i) {
call();
}

void call() {
// trigger only once per 100 calls.
// e.g. static int i = 0; if (++i % 100) doSomething();
}

最佳答案

您可以使用静态 AtomicInteger ,像这样:

private static final AtomicInteger counter = new AtomicInteger();

然后在您的 call() 方法中执行以下操作:

if (counter.incrementAndGet() == N) {
do {
actualCall();
} while (counter.addAndGet(-N) >= N);
}

请注意,actualCall() 可能不会从将数字递增到 N 的确切调用中调用。例如,如果其他线程在 actualCall 正在进行时将计数器设置为 2*N,则 addAndGet(-N) 将返回一个值N,因此循环将继续,并再次调用 actualCall。但是,每 Ncall() 调用都会调用一次 actualCall

关于Java数据结构让一个方法只有在被调用N次后才会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24699155/

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