|
9 | 9 | public class SandboxJavaTest { |
10 | 10 |
|
11 | 11 | @Test |
12 | | - public void givenUsingTimer_whenSchedulingTaskOnce_thenCorrect() throws InterruptedException { |
| 12 | + public void givenUsingTimer_whenSchedulingTimerTaskOnce_thenCorrect() throws InterruptedException { |
| 13 | + final TimerTask timerTask = new TimerTask() { |
| 14 | + @Override |
| 15 | + public void run() { |
| 16 | + System.out.println("Time when was task performed" + new Date()); |
| 17 | + System.out.println("Thread's name: " + Thread.currentThread().getName()); |
| 18 | + } |
| 19 | + }; |
13 | 20 | final Timer timer = new Timer("Thread's name"); |
14 | 21 | System.out.println("Current time:" + new Date()); |
15 | | - System.out.println("Thread name: " + Thread.currentThread().getName()); |
| 22 | + System.out.println("Thread's name: " + Thread.currentThread().getName()); |
| 23 | + final long delay = 2L * 1000L; |
| 24 | + timer.schedule(timerTask, delay); |
| 25 | + Thread.sleep(delay); |
| 26 | + } |
| 27 | + |
| 28 | + @Test |
| 29 | + public void givenUsingTimer_whenSchedulingRepeatedTask_thenCorrect() throws InterruptedException { |
| 30 | + final TimerTask repeatedTask = new TimerTask() { |
| 31 | + int count = 0; |
16 | 32 |
|
17 | | - final TimerTask timerTask = new TimerTask() { |
18 | 33 | @Override |
19 | 34 | public void run() { |
20 | | - System.out.println("Time when task performed" + new Date()); |
21 | | - System.out.println("Thread name: " + Thread.currentThread().getName()); |
22 | | - timer.cancel(); |
| 35 | + count++; |
| 36 | + System.out.println("Time when task was performed: " + new Date()); |
| 37 | + System.out.println("Thread's name: " + Thread.currentThread().getName()); |
| 38 | + if (count >= 5) { |
| 39 | + cancel(); |
| 40 | + } |
23 | 41 | } |
24 | 42 | }; |
25 | | - final long delay = 2 * 1000; |
26 | | - timer.schedule(timerTask, delay); |
| 43 | + final Timer timer = new Timer("Timer thread"); |
| 44 | + System.out.println("Current time: " + new Date()); |
| 45 | + System.out.println("Thread's name: " + Thread.currentThread().getName()); |
| 46 | + final long delay = 2L * 1000L; |
| 47 | + final long period = 1L * 1000L; |
| 48 | + timer.scheduleAtFixedRate(repeatedTask, delay, period); |
| 49 | + Thread.sleep(delay + period * 5L); |
| 50 | + } |
| 51 | + |
| 52 | + @Test |
| 53 | + public void givenUsingTimer_whenSchedulingRepeatedCustomTimerTask_thenCorrect() throws InterruptedException { |
| 54 | + class MyTask extends TimerTask { |
| 55 | + long timesToRun = 0; |
| 56 | + long timesRunned = 0; |
| 57 | + |
| 58 | + public void setTimesToRun(final int timesToRun) { |
| 59 | + this.timesToRun = timesToRun; |
| 60 | + } |
| 61 | + |
| 62 | + @Override |
| 63 | + public void run() { |
| 64 | + timesRunned++; |
| 65 | + System.out.println("Task performed on: " + new Date()); |
| 66 | + System.out.println("Thread's name: " + Thread.currentThread().getName()); |
| 67 | + if (timesRunned >= timesToRun) { |
| 68 | + cancel(); |
| 69 | + } |
| 70 | + } |
| 71 | + } |
| 72 | + final MyTask repeatedTask = new MyTask(); |
| 73 | + repeatedTask.setTimesToRun(5); |
| 74 | + final long delay = 2L * 1000L; |
| 75 | + final long period = 1L * 1000L; |
| 76 | + final Timer timer = new Timer("Timer"); |
| 77 | + System.out.println("Current time: " + new Date()); |
| 78 | + System.out.println("Thread's name: " + Thread.currentThread().getName()); |
| 79 | + timer.scheduleAtFixedRate(repeatedTask, delay, period); |
| 80 | + Thread.sleep(delay + period * repeatedTask.timesToRun); |
27 | 81 | } |
28 | 82 |
|
29 | 83 | } |
0 commit comments