Beispiel #1
0
  public static <T> T invokeTask(Callable<T> task, int taskTimeout) {
    T result = null;

    ExecutorService executor = Executors.newCachedThreadPool();
    Future<T> future = executor.submit(task);

    try {
      result = future.get(taskTimeout, TimeUnit.SECONDS);
    } catch (TimeoutException | InterruptedException | ExecutionException ex) {
      ex.printStackTrace();
    } finally {
      future.cancel(true);
      executor.shutdown();
      if (!executor.isTerminated()) executor.shutdownNow();
    }
    return result;
  }