如何在首次初始化后创建共享计时器

问题描述 投票:1回答:1

我有一个多线程java应用程序,其中每个线程尝试从池中获取数据库连接。如果连接不可用,则等待5分钟直到三次尝试,如果连接未在三次尝试中创建,则会失败。

我现在想要的是创建一个初始化值为5分钟的共享递减计时器。当第一次连接失败并且线程将进入等待状态5分钟时,此计时器将启动。现在对于更多线程,如果发生连接失败并且定时器已经启动,则选择定时器的当前值并进入等待状态直到定时器的当前值。现在每当线程被唤醒时,如果再次失败,它将重新尝试连接并将计时器重新设置为5分钟。

有没有现成的解决方案。

java multithreading timer countdowntimer
1个回答
1
投票

使用System.currentTimeMillis()作为共享计时器并将最后一次检查的时间戳存储在共享static final AtomicLong中,您可以在每次检查时使用getAndSetgetAndUpdate,并将读取值与当前时间进行比较,计算它是否在5分钟内。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.