zoukankan      html  css  js  c++  java
  • java 线程池学习

    在jdk1.5版本实现了几种线程池模式,基本适用于开发中应用到的绝大多数场景;

    线程池介绍:

    1.newCachedThreadPool 无界线程池

    无界线程池一般适用于一些执行时间很短的异步任务,服务器中应用的不多,大量线程会影响性能

    2.newFixedThreadPool 固定大小线程池线程池

    常用的线程池,使用并行的一般场景

    3.newSingleThreadExecutor 单个后台线程线程池

    单例线程池,目的是将并行线程转成串行运行,适用于对执行顺序有要求或程序代码上无法解决并行问题的场景

    4.newScheduledThreadPool 定时及周期性任务执行线程池

    可用于定时执行或周期执行任务的线程池

    关于线程池数量配置的要求,在服务器端一般比较严格,尽可能的提高线程的性能。关于应用,可以分为两种:1.cpu密集型应用(计算密集型应用) 2.IO密集型应用

    第一种情况,程序需要尽可能高的cpu计算速度,不会出现较多的等待或堵塞情况,线程较高时,相反会降低CPU的使用率,一般配置为2线程数 = CPU核数+1对于JDK1.8来说,里面增加了一个并行计算,计算密集型的较理想线程数 = CPU内核线程数*2

    第二种情况,程序中伴随网络传输,文件操作,数据库操作等情况,程序会在IO操作时发生等待、堵塞的情况,为了提高CPU使用率以及加速程序运行,可适当加大线程数量,一般较为理想的线程数=CPU核心数/(1-阻塞系数),阻塞系数一般为0.8~0.9

  • 相关阅读:
    正则表达式
    JS逻辑算法
    js函数
    JS运算符的应用
    JS课堂笔记
    json模块学习
    什么是面向对象,以及如何定义对象,实例化对象
    什么是面向过程,以及代码展示
    什么是元类,以及用type类来产生类.
    python下载安装
  • 原文地址:https://www.cnblogs.com/wolflowhereu/p/5253855.html
Copyright © 2011-2022 走看看