我使用openejb @Resource TimerService
(我认为会注入org.apache.openejb.core.timer.TimerServiceImpl
)来设置每秒的重复任务。
timerService.createCalendarTimer(new ScheduleExpression()
.hour("*"),
.minute("*"),
.second("1"),
new TimerConfig("timerName",false)
);
最初,超时每秒或多或少地发生,但随着时间的推移,可靠性会恶化,并且在几天之后,呼叫之间的增量看起来像这样:
delta [seconds] number of occurences
----------------------------------------------
0 18057
1 35084
2 2509
3 4668
4 1869
5 2093
6 632
7 376
8 697
9 93
10 6
11 3
15 2
16 1
18 1
19 1
20 3
22 2
25 2
26 2
31 2
33 1
34 1
38 1
调用的函数没有阻塞,我没有得到任何" UnableToAquireLock"异常。
如何确保在函数的两个连续调用之间传递不超过两秒?