Java单例模式简单吗?
Javasingl
如何优雅的使用和理解线程池?你怎么看?
要想很好地理解和使用java线程池,需要掌握并发编程的基础知识,并仔细阅读和学习线程池API的所有官方文档。在这里,线程池的优雅使用要点总结如下,:。
1.弄清楚你想用线程池做什么。例如,您的目标是将同步API转换为异步API,还是希望并发请求多个外部服务,或者减少线程的创建和销毁以处理用户请求。
2.根据你的实际项目需求,配置线程池的参数,包括corePoolSize、maximumPoolSize、阻塞队列、keepAliveTime、线程工厂和饱和策略(或者RejectedExecutionHandler)。
3.根据您的应用程序特征部署线程池。有些后台服务应用适合在启动时创建线程池,在应用执行过程中不会修改线程池。有时,应用程序适合临时创建线程池和提交任务,并在使用后立即销毁它们。
4.当您决定停止使用线程池时,您应该调用shutdown()来优雅地关闭线程池。关闭可以保证之前已经提交给线程池的任务不会被丢弃,从而保证数据安全。
5.调用shutdown时,此时线程池可能正在执行任务,但是提交任务的入口是关闭的。如果需要等待线程池完全终止,则需要调用awaitTerminate来等待线程池完成队列中的所有任务,并在返回之前将其清理干净。AwaitTerminate返回成功,线程池确实清理干净了。
综上所述,线程池按照创建(构造方法)、提交任务(执行)、关闭、等待清算的顺序调用API,这样使用线程池才优雅。要用好java线程池,最大化优化器的性能,可以参考我官方账号里的分析文章。