线程池的配置和监控

1、合理的配置线程池 要想合理的配置线程池,就必须首先分析任务特性,可以从以下几个角度来进行分析: 任务的性质:CPU密集型任务,IO密集型任务和混合型任务。 任务的优先级:高,中和低。 任务的执行时间:长,中和短。 任务的依赖性:是否依赖其他系统资源,如数据库连接。 任务性质不同的任务可以用不同规模的线程池分开处理。CPU密集型任务配置尽可能小的线程,如配置Ncpu+1个线程的线程池。IO密集型任务则由于线程并不是一直在执行任务,则配置尽可能多的线程,如2*Ncpu。 ...

ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 是 Java concurrent 包的重要成员。本文将结合 Java 内存模型,来分析 ConcurrentHashMap 的 JDK 源代码。通过本文,读者将了解到 ConcurrentHashMap 高并发性的具体实现机制。这对于我们在实际应用中更加高效的使用它是很有帮助的。 简介 ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 Concurren ...

线程池的拒绝策略

默认提供4种拒绝策略,可以自定义实现RejectedExecutionHandler进行扩展 1、AbortPolicy 2、DiscardPolicy 3、DiscardOldestPolicy 4、CallerRunsPolicy AbortPolicy,无法处理任务任务的时候,直接抛出异常, public static class AbortPolicy implements RejectedExecutionHandler { /** ...