26
26
package com .sun .glass .ui .monocle ;
27
27
28
28
import com .sun .glass .ui .Timer ;
29
+ import java .util .concurrent .ScheduledFuture ;
30
+ import java .util .concurrent .ScheduledThreadPoolExecutor ;
31
+ import java .util .concurrent .TimeUnit ;
29
32
30
33
/**
31
34
* Monocle implementation class for Timer.
32
35
*/
33
36
final class MonocleTimer extends Timer {
34
- private static java . util . Timer timer ;
35
- private java . util . TimerTask task ;
37
+ private static ScheduledThreadPoolExecutor scheduler ;
38
+ private ScheduledFuture <?> task ;
36
39
37
40
MonocleTimer (final Runnable runnable ) {
38
41
super (runnable );
@@ -47,19 +50,11 @@ static int getMaxPeriod_impl() {
47
50
}
48
51
49
52
@ Override protected long _start (final Runnable runnable , int period ) {
50
- if (timer == null ) {
51
- timer = new java . util . Timer ( true );
53
+ if (scheduler == null ) {
54
+ scheduler = new ScheduledThreadPoolExecutor ( 1 );
52
55
}
53
56
54
- task = new java .util .TimerTask () {
55
-
56
- @ Override
57
- public void run () {
58
- runnable .run ();
59
- }
60
- };
61
-
62
- timer .schedule (task , 0 , (long )period );
57
+ task = scheduler .scheduleAtFixedRate (runnable , 0 , period , TimeUnit .MILLISECONDS );
63
58
return 1 ; // need something non-zero to denote success.
64
59
}
65
60
@@ -69,7 +64,7 @@ public void run() {
69
64
70
65
@ Override protected void _stop (long timer ) {
71
66
if (task != null ) {
72
- task .cancel ();
67
+ task .cancel (false );
73
68
task = null ;
74
69
}
75
70
}
0 commit comments