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

时间:2018-04-18 08:30:19

标签: java multithreading timer countdowntimer

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

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

是否有现成的解决方案。

1 个答案:

答案 0 :(得分:1)

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