Thread专题(5)中,如何优化任务执行效率?
- 内容介绍
- 文章标签
- 相关推荐
本文共计5206个文字,预计阅读时间需要21分钟。
本文被收录在《系列文章:架构师必备》(系列)中。所谓职能,即抽象的工作单元。将一个应用程序的工作分解到职能中,可以简化程序的的管理。这种分离不仅简化了管理,还适用于不同的事务。
此文被笔者收录在系列文章 架构师必备(系列) 中
所谓任务就是抽象、离散的工作单元。把一个应用程序的工作分离到任务中,可以简化程序的管理,这种分离还在不同事务间划分了自然的分界线,在程序出现错误时可以很方便地进行恢复,还有利于提高程序的并发性。
围绕任务执行来管理应用程序时,第一步要指明一个清晰的任务边界,理想情况下,任务是独立活动的,它的工作并不依赖于其他任务的状态、结果或边界效应,独立有利于并发性。应用程序应该在负荷过载时平缓地劣化,而不应该负载一高就简单地以失败告终。为了达到这些目的,要选择一个清晰的任务边界,并配合一个明确的任务执行策略。现在的很多服务器都选择了自然边界,比如单个客户请求。
一、JAVA中的线程调度
抢占式
抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。这是JAVA中的实现方案,相关算法如下:
- 优先调度算法:先来先服务算法FCFS和短作业优先调度算法,公平机制
- 高优先权优先算法:非公平,用于非实时应用中
- 时间片轮询算法:
协同式
协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。
本文共计5206个文字,预计阅读时间需要21分钟。
本文被收录在《系列文章:架构师必备》(系列)中。所谓职能,即抽象的工作单元。将一个应用程序的工作分解到职能中,可以简化程序的的管理。这种分离不仅简化了管理,还适用于不同的事务。
此文被笔者收录在系列文章 架构师必备(系列) 中
所谓任务就是抽象、离散的工作单元。把一个应用程序的工作分离到任务中,可以简化程序的管理,这种分离还在不同事务间划分了自然的分界线,在程序出现错误时可以很方便地进行恢复,还有利于提高程序的并发性。
围绕任务执行来管理应用程序时,第一步要指明一个清晰的任务边界,理想情况下,任务是独立活动的,它的工作并不依赖于其他任务的状态、结果或边界效应,独立有利于并发性。应用程序应该在负荷过载时平缓地劣化,而不应该负载一高就简单地以失败告终。为了达到这些目的,要选择一个清晰的任务边界,并配合一个明确的任务执行策略。现在的很多服务器都选择了自然边界,比如单个客户请求。
一、JAVA中的线程调度
抢占式
抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。这是JAVA中的实现方案,相关算法如下:
- 优先调度算法:先来先服务算法FCFS和短作业优先调度算法,公平机制
- 高优先权优先算法:非公平,用于非实时应用中
- 时间片轮询算法:
协同式
协同式调度指某一线程执行完后主动通知系统切换到另一线程上执行,这种模式就像接力赛一样,一个人跑完自己的路程就把接力棒交接给下一个人,下个人继续往下跑。

