mirror of
https://github.com/sjsdfg/effective-java-3rd-chinese.git
synced 2025-03-24 08:10:32 +08:00
parent
3816ddcb5e
commit
75fb7b68fd
@ -1,8 +1,8 @@
|
||||
# 80. executor 、task 和 stream 优先于线程
|
||||
|
||||
本书第 1 版中阐述了简单的工作队列(work queue)[Bloch01 ,详见第 49 条]的代码。这个类允许客户端按队列等待由后台线程异步处理的工作项目。当不再需要这个工作队列时,客户端可以调用一个方法,让后台线程在完成了已经在队列中的所有工作之后,优雅地终止自己。这个实现几乎就像一件玩具,但即使如此,它还是需要一整页精细的代码,如果你实现的不对,就容易出现安全问题或者导致活性失败。幸运的是,你再也不需要编写这样的代码了。
|
||||
本书第 1 版中阐述了简单的工作队列(work queue)[Bloch01 ,详见第 49 条]代码。它利用一个后台线程,允许客户端可以插入异步处理任务到队列中。当不再需要这个工作队列时,客户端可以调用一个方法,让后台线程在完成队列中所有工作后,优雅的终止自己。这个实现仅比玩具复杂一点,即使这样,它依然需要整整一页精妙的代码,如果你不能正确的实现,将很容易会出现安全性和活性失败。幸运的是,你再不需要写这类代码了。
|
||||
|
||||
到本书第二版出版的时候, Java 平台中已经增加了 `java.util.concurrent` 。这个字包中包含了一个 Executor Framework 它是一个很灵活的基于接口的任务执行工具。它创建了一个在各方面都比本书第一版更好的工作队列,却只需要这一行代码:
|
||||
到本书第二版出版的时候, Java 平台中已经增加了 `java.util.concurrent` 包。它包含了一个很灵活的基于接口的任务执行工具 —— Executor Framework 。只需一行代码就可以创建了一个在各方面都比本书第一版更好的工作队列:
|
||||
|
||||
```java
|
||||
ExecutorService exec = Executors.newSingleThreadExecutor();
|
||||
|
Loading…
Reference in New Issue
Block a user