import java
.util.Arrays
import java
.util.List
import java
.util.concurrent.Callable
import java
.util.concurrent.ExecutionException
import java
.util.concurrent.ExecutorService
import java
.util.concurrent.Executors
import java
.util.concurrent.ScheduledExecutorService
import java
.util.concurrent.ScheduledFuture
import java
.util.concurrent.TimeUnit
public class Executors3 {
public static void main(String[] args) throws InterruptedException, ExecutionException {
test1()
// test2()
// test3()
// test4()
// test5()
}
private static void test5() throws InterruptedException, ExecutionException {
ExecutorService executor = Executors
.newWorkStealingPool()
List<Callable<String>> callables = Arrays
.asList(
callable(
"task1",
2),
callable(
"task2",
1),
callable(
"task3",
3))
String result = executor
.invokeAny(callables)
System
.out.println(result)
executor
.shutdown()
}
private static Callable<String> callable(String result, long sleepSeconds) {
return () -> {
TimeUnit
.SECONDS.sleep(sleepSeconds)
return result
}
}
private static void test4() throws InterruptedException {
ExecutorService executor = Executors
.newWorkStealingPool()
List<Callable<String>> callables = Arrays
.asList(
() ->
"task1",
() ->
"task2",
() ->
"task3")
executor
.invokeAll(callables)
.stream()
.map(future -> {
try {
return future
.get()
}
catch (Exception e) {
throw new IllegalStateException(e)
}
})
.forEach(System
.out::println)
executor
.shutdown()
}
private static void test3() {
ScheduledExecutorService executor = Executors
.newScheduledThreadPool(
1)
Runnable task = () -> {
try {
TimeUnit
.SECONDS.sleep(
2)
System
.out.println(
"Scheduling: " + System
.nanoTime())
}
catch (InterruptedException e) {
System
.err.println(
"task interrupted")
}
}
executor
.scheduleWithFixedDelay(task,
0,
1, TimeUnit
.SECONDS)
}
private static void test2() {
ScheduledExecutorService executor = Executors
.newScheduledThreadPool(
1)
Runnable task = () -> System
.out.println(
"Scheduling: " + System
.nanoTime())
int initialDelay =
0
int period =
1
executor
.scheduleAtFixedRate(task, initialDelay, period, TimeUnit
.SECONDS)
}
private static void test1() throws InterruptedException {
ScheduledExecutorService executor = Executors
.newScheduledThreadPool(
1)
Runnable task = () -> System
.out.println(
"Scheduling: " + System
.nanoTime())
int delay =
3
ScheduledFuture<?> future = executor
.schedule(task, delay, TimeUnit
.SECONDS)
TimeUnit
.MILLISECONDS.sleep(
1337)
long remainingDelay = future
.getDelay(TimeUnit
.MILLISECONDS)
System
.out.printf(
"Remaining Delay: %sms\n", remainingDelay)
}
}
转载于:https://www.cnblogs.com/bilaisheng/p/10210905.html
相关资源:Azkaban报错-azkaban.executor.ExecutorManagerException: No active executors found