• JDK1.5多线程提高


    1.名词:

      1.任务的执行与任务的提交解耦

      2.任务的执行策略-可中断,取消

    2.线程封闭机制:

      针对单线程池而言,提高任务执行的速度,但是无需锁定

    3.饥饿死锁:

      任务长期得不到执行,其实就是形成闭合的环路导致,共享资源互相锁定导致

    4.超时机制:

      指定时间任务完不成,则重新加入的线程的执行队列中等待重新执行(超时就是重试机制)

    5.线程池的大小:

      做好做成动态的,看CPU的线程数:Runntime.avalibleProcessors()

    6.ExecutorService:

      线程管理器其实就是一个ThreadPools,里面有线程,任务队列所以我们可以定制ThreadPoolsExecutor(个数,最大个数,空闲时间,任务队列,线程工厂,拒绝处理器

      空闲时间:线程没有被执行的时间间隔,如果一直未被使用,则进行回收

      任务队列:用户提交的任务列表,其实就是缓存,等待线程执行---扩展点

      线程工厂:  线程池随着需求进行动态创建线程的过程中所使用的线程工厂  ----扩展点

      拒绝策略:针对用户提交任务的限制,因为队列是优先的---扩展点

      线程工厂:定制特殊的线程

      线程池:任务执行前后进行监控 beforeExecute  afterExecute

    7.队列:

      有届队列:大小有限制,超过容量之后将会执行拒绝的执行器

      无界队列:

      同步移交:针对大队列,直接提交给执行线程

    8.Caller-Run:一种饱和机制,任务执行在与Executor的所在线程,应用层进行排队执

    9.控制线程池的任务提交的速率就是通过信号量机制进行限制

    10.守护线程与非守护线程:(一些业务可以标识为守护线程,自动销毁)

    11.

    ===========================================================

    开发中的问题:

    1.线程池大小动态设置

    2.饱和策略

    3.任务执行失败,重试策略

    4.

  • 相关阅读:
    【转】Oracle学习系列
    昏昏昏昏昏昏,怎么变成这样了。:(
    SQLServer 2K 安装重复出现挂起问题解决办法
    ORM iBATIS 学习,没弄清楚。
    MagicLinux让我用我一个方便的方法引导你吧。
    SOA大赛初赛文档已经提交.心中大石掉下.
    继续一下目标。
    ORM已经理解了.
    Spot the Bug Episode 2 中BUG的修改
    MaglicLinux启动加入了BOO.INI搞定.这个方便了.
  • 原文地址:https://www.cnblogs.com/gstsyyb/p/3850061.html
Copyright © 2020-2023  润新知