test/java/util/Timer/Args.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 21,32 ****
* questions.
*/
/*
* @test
! * @bug 6571655 6571881 6574585 6571297
* @summary Test various args to task scheduling methods
*/
import java.util.*;
import java.util.concurrent.*;
--- 21,33 ----
* questions.
*/
/*
* @test
! * @bug 6571655 6571881 6574585 6571297 8004807
* @summary Test various args to task scheduling methods
+ * @run main/othervm Args
*/
import java.util.*;
import java.util.concurrent.*;
*** 47,60 ****
t.scheduleAtFixedRate(task, d, period);
THROWS(IllegalStateException.class,
new F(){void f(){ t.scheduleAtFixedRate(task, d, period); }});
}
! TimerTask counter(final CountDownLatch latch) {
! return new TimerTask() { public void run() {
! check(latch.getCount() > 0);
latch.countDown();
}};
}
void test(String[] args) throws Throwable {
final Timer t = new Timer();
--- 48,67 ----
t.scheduleAtFixedRate(task, d, period);
THROWS(IllegalStateException.class,
new F(){void f(){ t.scheduleAtFixedRate(task, d, period); }});
}
! TimerTask counter(final CountDownLatch latch, final Timer timer, final boolean repeatable) {
! return new TimerTask() {
! private boolean executed = false;
! public void run() {
! // check if the unrepeatable task is executed repeatedly.
! check(!executed ? executed = true : repeatable);
latch.countDown();
+ if (latch.getCount() == 0) {
+ timer.cancel();
+ }
}};
}
void test(String[] args) throws Throwable {
final Timer t = new Timer();
*** 90,117 ****
new F(){void f(){ t.scheduleAtFixedRate(null, 42, 42); }},
new F(){void f(){ t.scheduleAtFixedRate(x, (Date)null, 42); }}
);
! final CountDownLatch y1 = new CountDownLatch(1);
! final CountDownLatch y2 = new CountDownLatch(1);
! final CountDownLatch y3 = new CountDownLatch(11);
final long start = System.currentTimeMillis();
final Date past = new Date(start - 10500);
! schedule( t, counter(y1), past);
! schedule( t, counter(y2), past, 1000);
! scheduleAtFixedRate(t, counter(y3), past, 1000);
! y3.await();
! y1.await();
! y2.await();
final long elapsed = System.currentTimeMillis() - start;
- System.out.printf("elapsed=%d%n", elapsed);
check(elapsed < 500);
! t.cancel();
THROWS(IllegalStateException.class,
new F(){void f(){ t.schedule(x, 42); }},
new F(){void f(){ t.schedule(x, past); }},
new F(){void f(){ t.schedule(x, 42, 42); }},
--- 97,120 ----
new F(){void f(){ t.scheduleAtFixedRate(null, 42, 42); }},
new F(){void f(){ t.scheduleAtFixedRate(x, (Date)null, 42); }}
);
! final CountDownLatch y = new CountDownLatch(13);
final long start = System.currentTimeMillis();
final Date past = new Date(start - 10500);
! schedule(t, counter(y, t, false), past);
! schedule(t, counter(y, t, false), past, 1000);
! scheduleAtFixedRate(t, counter(y, t, true), past, 1000);
! y.await();
final long elapsed = System.currentTimeMillis() - start;
check(elapsed < 500);
+ System.out.printf("elapsed=%d%n", elapsed);
! t.cancel(); //cancel the timer if it hasn't been cancelled by task
THROWS(IllegalStateException.class,
new F(){void f(){ t.schedule(x, 42); }},
new F(){void f(){ t.schedule(x, past); }},
new F(){void f(){ t.schedule(x, 42, 42); }},