Does Java have support for multicore
processors/parallel processing?
是。它也是其他编程语言的平台,其实现增加了“真正的多线程”或“真正的线程”卖点。在较新版本中引入的G1 Garbage Collector也使用多核硬件。
Java并发实践
If I can make use of multiple cores in
Java, what class/technique would I
use?
java.util.concurrent
Utility classes commonly useful in
concurrent programming. This package
includes a few small standardized
extensible frameworks, as well as some
classes that provide useful
functionality and are otherwise
tedious or difficult to implement.
Here are brief descriptions of the
main components.
执行者
Executor是一个简单的标准化接口,用于定义自定义线程子系统,包括线程池,异步IO和轻量级任务框架。
队列
java.util.concurrent ConcurrentLinkedQueue类提供了一个高效的可扩展线程安全无阻塞FIFO队列。
定时
TimeUnit类提供了用于指定和控制基于超时的操作的多个粒度(包括纳秒)。包中的大多数类包含除了不确定等待之外基于超时的操作。
同步器
四个类支持常见的专用同步习语。 Semaphore是一个典型的并发工具。 CountDownLatch是一个非常简单但非常常用的实用程序,用于阻塞,直到给定数量的信号,事件或条件成立。 […]
并发收藏
除了队列,这个包提供了几个集合实现设计用于多线程上下文:ConcurrentHashMap,CopyOnWriteArrayList和CopyOnWriteArraySet。
如果您想将线程数与可用CPU数相匹配,这也很方便,例如:
int n = Runtime.getRuntime().availableProcessors();