Java是否支持多核处理器/并行处理?
是。它还是其他编程语言的平台,在该平台上,实现增加了“真正的多线程”或“真正的线程”卖点。在较新版本中引入的G1垃圾收集器还利用了多核硬件。
实践中的Java并发
尝试获取《 Java Concurrency in
Practice》 一书的副本。
如果我可以使用Java中的多个内核,我将使用什么类/技术?
java.util.concurrent
实用程序类 通常在 并发编程中 有用
。该软件包包括一些小的标准化可扩展框架,以及一些提供有用功能的类,这些类否则是乏味的或难以实现的。以下是主要组件的简要说明。
执行者
Executor是一个简单的标准化接口,用于定义自定义的类线程子系统,包括线程池,异步IO和轻量级任务框架。
Queue列
java.util.concurrent
ConcurrentlinkedQueue类提供了高效的可伸缩线程安全无阻塞FIFO队列。
定时
的
TimeUnit类提供了用于指定和控制超时基于操作的多个粒度(包括毫微秒)。包中的大多数类除了不确定的等待时间以外,还包含基于超时的操作。
同步器
四个类辅助通用的专用同步惯用语。
Semaphore是经典的并发工具。
CountDownLatch是一个非常简单但非常通用的实用程序,用于阻止直到给定数量的信号,事件或条件成立。[…]
并发集合
除了队列,这个包提供了几个集合实现在多线程环境中设计用于:
ConcurrentHashMap,
CopyOnWriteArrayList,和
CopyOnWriteArraySet。
如果您想将线程数与可用CPU数进行匹配,这也非常有用:
int n = Runtime.getRuntime().availableProcessors();



