33import java .util .Date ;
44import java .util .Timer ;
55import java .util .TimerTask ;
6+ import java .util .concurrent .Executors ;
7+ import java .util .concurrent .ScheduledExecutorService ;
8+ import java .util .concurrent .TimeUnit ;
69
710import org .junit .Test ;
811
@@ -15,16 +18,102 @@ public void givenUsingTimer_whenSchedulingTaskOnce_thenCorrect() throws Interrup
1518 final TimerTask timerTask = new TimerTask () {
1619 @ Override
1720 public void run () {
18- System .out .println ("Task performed on " + new Date () + "\n " + "Thread's name: " + Thread .currentThread ().getName ());
21+ System .out .println ("Task performed on: " + new Date () + "\n " + "Thread's name: " + Thread .currentThread ().getName ());
1922 }
2023 };
21-
2224 final Timer timer = new Timer ("Timer" );
25+
2326 final long delay = 1000L ;
2427 timer .schedule (timerTask , delay );
2528
2629 Thread .sleep (delay * 2 );
2730 timer .cancel ();
2831 }
2932
33+ @ Test
34+ public void givenUsingTimer_whenSchedulingRepeatedTask_thenCorrect () throws InterruptedException {
35+ final TimerTask repeatedTask = new TimerTask () {
36+ @ Override
37+ public void run () {
38+ System .out .println ("Task performed on " + new Date ());
39+ }
40+ };
41+ final Timer timer = new Timer ("Timer" );
42+
43+ final long delay = 1000L ;
44+ final long period = 1000L ;
45+ timer .scheduleAtFixedRate (repeatedTask , delay , period );
46+
47+ Thread .sleep (delay * 2 );
48+ timer .cancel ();
49+ }
50+
51+ @ Test
52+ public void givenUsingTimer_whenSchedulingDailyTask_thenCorrect () throws InterruptedException {
53+ final TimerTask repeatedTask = new TimerTask () {
54+ @ Override
55+ public void run () {
56+ System .out .println ("Task performed on " + new Date ());
57+ }
58+ };
59+ final Timer timer = new Timer ("Timer" );
60+
61+ final long delay = 1000L ;
62+ final long period = 1000L * 60L * 60L * 24L ;
63+ timer .scheduleAtFixedRate (repeatedTask , delay , period );
64+
65+ Thread .sleep (delay * 2 );
66+ timer .cancel ();
67+ }
68+
69+ @ Test
70+ public void givenUsingTimer_whenCancelingTimerTask_thenCorrect () throws InterruptedException {
71+ final TimerTask task = new TimerTask () {
72+ @ Override
73+ public void run () {
74+ System .out .println ("Task performed on " + new Date ());
75+ cancel ();
76+ }
77+ };
78+ final Timer timer = new Timer ("Timer" );
79+
80+ final long delay = 1000L ;
81+ final long period = 1000L ;
82+ timer .scheduleAtFixedRate (task , delay , period );
83+
84+ Thread .sleep (delay * 3 );
85+ }
86+
87+ @ Test
88+ public void givenUsingTimer_whenCancelingTimer_thenCorrect () throws InterruptedException {
89+ final TimerTask task = new TimerTask () {
90+ @ Override
91+ public void run () {
92+ System .out .println ("Task performed on " + new Date ());
93+ }
94+ };
95+ final Timer timer = new Timer ("Timer" );
96+
97+ timer .scheduleAtFixedRate (task , 1000L , 1000L );
98+
99+ Thread .sleep (1000L * 2 );
100+ timer .cancel ();
101+ }
102+
103+ @ Test
104+ public void givenUsingExecutorService_whenSchedulingRepeatedTask_thenCorrect () throws InterruptedException {
105+ final TimerTask repeatedTask = new TimerTask () {
106+ @ Override
107+ public void run () {
108+ System .out .println ("Task performed on " + new Date ());
109+ }
110+ };
111+ final ScheduledExecutorService executor = Executors .newSingleThreadScheduledExecutor ();
112+ final long delay = 1000L ;
113+ final long period = 1000L ;
114+ executor .scheduleAtFixedRate (repeatedTask , delay , period , TimeUnit .MILLISECONDS );
115+ Thread .sleep (delay + period * 3 );
116+ executor .shutdown ();
117+ }
118+
30119}
0 commit comments