没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
15页
所谓任务就是抽象、离散的工作单元。把一个应用程序的工作分离到任务中,可以简化程序 的管理,这种分离还在不同事务间划分了自然的分界线,在程序出现错误时可以很方便地进行恢复,还有利于提高程序的并发性。围绕任务执行来管理应用程序时,第一步要指明一个清晰的任务边界,理想情况下,任务是 独立活动的,它的工作并不依赖于其他任务的状态、结果或边界效应,独立有利于并发性。应用程 序应该在负荷过载时平缓地劣化,而不应该负载一高就简单地以失败告终。为了达到这些目 的,要选择一个清晰的任务边界,并配合一个明确的任务执行策略。
资源推荐
资源详情
资源评论
JAVA并发编程实践
⽬录
第五章、任务执⾏.............................................................................................3
JAVA中的线程调度 .....................................................................................3
抢占式.........................................................................................................................3
协同式.........................................................................................................................3
显式的为任务创建线程............................................................................................3
Executor框架 .............................................................................................4
执⾏策略 .................................................................................................................5
线程池.....................................................................................................................6
Executor⽣命周期..................................................................................................6
延迟的、并具周期性的任务 ....................................................................................7
寻找可强化的并⾏性 ...................................................................................8
顺序的渲染⻚⾯元素 ...............................................................................................8
可携带结果的任务:Callable和Future...................................................................9
并⾏运⾏类任务的局限性 ......................................................................................10
CompletionService:当Executor遇⻅BlockingQueue .....................................11
为任务设置时限 .................................................................................................... 12
2
第五章、任务执⾏
所谓任务就是抽象、离散的⼯作单元。把⼀个应⽤程序的⼯作分离到任务中,可以简化程序
的管理,这种分离还在不同事务间划分了⾃然的分界线,在程序出现错误时可以很⽅便地进⾏恢
复,还有利于提⾼程序的并发性。
围绕任务执⾏来管理应⽤程序时,第⼀步要指明⼀个清晰的任务边界,理想情况下,任务是
独⽴活动的,它的⼯作并不依赖于其他任务的状态、结果或边界效应,独⽴有利于并发性。应⽤程
序应该在负荷过载时平缓地劣化,⽽不应该负载⼀⾼就简单地以失败告终。为了达到这些⽬
的,要选择⼀个清晰的任务边界,并配合⼀个明确的任务执⾏策略。
现在的很多服务器都选择了⾃然边界,⽐如单个客户请求。
JAVA中的线程调度
抢占式
抢占式调度指的是每条线程执⾏的时间、线程的切换都由系统控制,系统控制指的是
在系统某种运⾏机制下,可能每条线程都分同样的执⾏时间⽚,也可能是某些线程执⾏的时
间⽚较⻓,甚⾄某些线程得不到执⾏的时间⽚。在这种机制下,⼀个线程的堵塞不会导致整
个进程堵塞。这是JAVA中的实现⽅案,相关算法如下:
n
优先调度算法:先来先服务算法FCFS和短作业优先调度算法,公平机制
n
⾼优先权优先算法:⾮公平,⽤于⾮实时应⽤中
n
时间⽚轮询算法:
协同式
协同式调度指某⼀线程执⾏完后主动通知系统切换到另⼀线程上执⾏,这种模式就像
接⼒赛⼀样,⼀个⼈跑完⾃⼰的路程就把接⼒棒交接给下⼀个⼈,下个⼈继续往下跑。线程
的执⾏时间由线程本身控制,线程切换可以预知,不存在多线程同步问题,但它有⼀个致命
弱点:如果⼀个线程编写有问题,运⾏到⼀半就⼀直堵塞,那么可能导致整个系统崩溃。
显式的为任务创建线程
下⾯这个例⼦称为“每任务每线程”,这种⽅法提⾼了响应性和更⼤的吞吐量,但在请
求的速度超出服务器的请求处理能⼒时,就不适合了。在开发原型阶段会表现良好。
3
剩余14页未读,继续阅读
资源评论
korgs
- 粉丝: 6784
- 资源: 106
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功