从任务的优先级,任务的执行时间长短,任务的性质(CPU密集/ IO密集),任务的依赖关系这四个角度来分析。并且近可能地使用有界的工作队列。 性质不同的任务可用使用不同规模的线程池分开处理:
JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
每个线程维护了一个“序列号”看看阿里巴巴 java 开发手册中推荐的 ThreadLocal 的用法 然后我们再要用到 DateFormat 对象的地方,这样调用:
Phaser 和 CountDownLatch、CyclicBarrier 都有很相似的地方。 Phaser 顾名思义,就是可以分阶段的进行线程同步。 CountDownLatch 只能在创建实例时,通过构造方法指定同步数量; Phaser 支持线程动态地向它注册。
其底层是由AQS提供支持,所以其数据结构可以参考AQS的数据结构,而AQS的数据结构核心就是两个虚拟队列: 同步队列sync queue 和条件队列condition queue,不同的条件会有不同的条件队列