如何使之可赎回等到执行?(How to make Callable wait till execut

2019-09-23 02:41发布

我有一个可赎回,我使用调用

FutureTask<Integer> task = new FutureTask<Integer>(new MyCallable(name, type));
pool = Executors.newSingleThreadExecutor();
pool.submit(task);

我想知道的是执行后继续pool.submit(task)或将等待调用完成执行?

总之我只是想知道有没有其他任何方法一样thread.join()可赎回?

Answer 1:

...有没有喜欢的Thread.join()可赎回任何方法?

pool.submit(callable)方法返回一个Future ,并立即开始执行,如果线程池中可用。 做join ,你可以调用future.get()与螺纹连接,返回由返回的值call()方法。 重要的是要注意, get()可以抛出一个ExecutionException如果call()方法抛出。

不需要来包装你CallableFutureTask 。 线程池不适合您。 所以,你的代码如下:

pool = Executors.newSingleThreadExecutor();
Future<String> future = pool.submit(new MyCallable(name, type));

// now you can do something in the foreground as your callable runs in the back

// when you are ready to get the background task's result you call get()
// get() waits for the callable to return with the value from call
// it also may throw an exception if the call() method threw
String value = future.get();

这是,如果你的MyCallable实现Callable<String>课程。 在Future<?>将匹配任何类型的Callable的。



Answer 2:

task.get()任务作为一个FutureTask )预期当前线程等待由线程池进程完成托管任务的。

这种方法最终返回无论是具体结果或抛出同样的检查例外(虽然裹成为ExecutionException)作业线程将其任务期间抛出。



文章来源: How to make Callable wait till execution?