java.util.concurrent.CompletableFuture#delayedExecutor ( )源码实例Demo

下面列出了java.util.concurrent.CompletableFuture#delayedExecutor ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: openjdk-jdk9   文件: CompletableFutureTest.java
public void testDelayedExecutor(Executor executor, Integer v) throws Exception {
    long timeoutMillis = timeoutMillis();
    // Use an "unreasonably long" long timeout to catch lingering threads
    long longTimeoutMillis = 1000 * 60 * 60 * 24;
    final Executor delayer, longDelayer;
    if (executor == null) {
        delayer = CompletableFuture.delayedExecutor(timeoutMillis, MILLISECONDS);
        longDelayer = CompletableFuture.delayedExecutor(longTimeoutMillis, MILLISECONDS);
    } else {
        delayer = CompletableFuture.delayedExecutor(timeoutMillis, MILLISECONDS, executor);
        longDelayer = CompletableFuture.delayedExecutor(longTimeoutMillis, MILLISECONDS, executor);
    }
    long startTime = System.nanoTime();
    CompletableFuture<Integer> f =
        CompletableFuture.supplyAsync(() -> v, delayer);
    CompletableFuture<Integer> g =
        CompletableFuture.supplyAsync(() -> v, longDelayer);

    assertNull(g.getNow(null));

    assertSame(v, f.get(LONG_DELAY_MS, MILLISECONDS));
    long millisElapsed = millisElapsedSince(startTime);
    assertTrue(millisElapsed >= timeoutMillis);
    assertTrue(millisElapsed < LONG_DELAY_MS / 2);

    checkCompletedNormally(f, v);

    checkIncomplete(g);
    assertTrue(g.cancel(true));
}
 
源代码2 项目: robozonky   文件: Cache.java
default Executor startEviction(Runnable eviction) {
    var executor = CompletableFuture.delayedExecutor(getEvictEvery().toNanos(), TimeUnit.NANOSECONDS);
    executor.execute(() -> {
        try {
            eviction.run();
        } finally {
            executor.execute(eviction);
        }
    });
    return executor;
}
 
源代码3 项目: j2objc   文件: CompletableFutureTest.java
public void testDelayedExecutor(Executor executor, Integer v) throws Exception {
    long timeoutMillis = timeoutMillis();
    // Use an "unreasonably long" long timeout to catch lingering threads
    long longTimeoutMillis = 1000 * 60 * 60 * 24;
    final Executor delayer, longDelayer;
    if (executor == null) {
        delayer = CompletableFuture.delayedExecutor(timeoutMillis, MILLISECONDS);
        longDelayer = CompletableFuture.delayedExecutor(longTimeoutMillis, MILLISECONDS);
    } else {
        delayer = CompletableFuture.delayedExecutor(timeoutMillis, MILLISECONDS, executor);
        longDelayer = CompletableFuture.delayedExecutor(longTimeoutMillis, MILLISECONDS, executor);
    }
    long startTime = System.nanoTime();
    CompletableFuture<Integer> f =
        CompletableFuture.supplyAsync(() -> v, delayer);
    CompletableFuture<Integer> g =
        CompletableFuture.supplyAsync(() -> v, longDelayer);

    assertNull(g.getNow(null));

    assertSame(v, f.get(LONG_DELAY_MS, MILLISECONDS));
    long millisElapsed = millisElapsedSince(startTime);
    assertTrue(millisElapsed >= timeoutMillis);
    assertTrue(millisElapsed < LONG_DELAY_MS / 2);

    checkCompletedNormally(f, v);

    checkIncomplete(g);
    assertTrue(g.cancel(true));
}