Java8并发教程:Threads和Executors | 并发编程网 - ifeve.com
欢迎阅读我的Java8并发教程的第一部分。这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程。这是一系列教程中的第一部分。在接下来的15分钟,你将会学会如何通过线程,任务(tasks)和 exector services来并行执行代码。 Runnable ——一个定义了一个无返回值无参数的 run() 因为 Runnable 或者这样: 我们可以将线程休眠确定的时间。在这篇文章接下来的代码示例中我们可以通过这种方法来模拟长时间运行的任务。 当你运行上面的代码时,你会注意到在第一条打印语句和第二条打印语句之间存在一分钟的延迟。 接下来,让我们走进并发API中最重要的一部——executor services。 ExecutorService 提供了两个方法来达到这个目的—— shutdwon() 会等待正在执行的任务执行完而 shutdownNow() 会终止所有正在执行的任务并立即关闭execuotr。 这是我喜欢的通常关闭executors的方式: executor通过等待指定的时间让当前执行的任务终止来"温柔的"关闭executor。在等待最长5分钟的时间后,execuote最终会通过中断所有的正在执行的任务关闭。 Callbale也可以像runnbales一样提交给 executor services。但是callables的结果怎么办?因为 submit() Future 在将callable提交给exector之后,我们先通过调用 future done? false future done? true result: 123 Future与底层的executor service紧密的结合在一起。记住,如果你关闭executor,所有的未中止的future都会抛出异常。 executor.shutdownNow(); future.get(); 你可能注意到我们这次创建executor的方式与上一个例子稍有不同。我们使用 ExecutorService executor = Executors.newFixedThreadPool(1); FutureRead full article from Java8并发教程:Threads和Executors | 并发编程网 - ifeve.com
No comments:
Post a Comment