广州网站建设支付,网站建设与管理的网页,怎么建设网站赚钱手机,门头沟建设网站1.在单个线程里处理所有的请求#xff1a;接受请求-处理请求
优点#xff1a;逻辑简单
缺点#xff1a;吞吐量低#xff0c;资源利用率低#xff0c;响应时间长 2.每个任务分配一个单独的线程来处理#xff1a; 接受请求-创建线程-在线程里处理请求
优点#xff1a; …1.在单个线程里处理所有的请求接受请求-处理请求
优点逻辑简单
缺点吞吐量低资源利用率低响应时间长 2.每个任务分配一个单独的线程来处理 接受请求-创建线程-在线程里处理请求
优点
主线程解除了处理请求这一负载可以更快速地接受下一个请求提高相应速度。任务可以并行执行进而提高吞吐率当其中某个或某几个线程中的任务因为I/O等原因而阻塞时其他线程不受影响
缺点
任务处理代码必须是线程安全的因为现在会有多个线程并发执行这些代码,使得代码复杂度提高更易出错当请求的速度超过处理的速度时线程的数量会一直增长可能导致资源耗尽,GC压力增大创建、销毁线程开销较大这个过程耗费的时间最终会传递到响应时间同时对资源也是很大的消耗线程数过高导致系统稳定性受到损害多个线程可以提升吞吐量但线程数不能无限制地增长因此要限制线程的数量。 引入 Executor Framework
Executor接口支持多种执行策略将任务的递交和任务的执行解耦。Executor基于生产者-消费者模型。生产者递交任务消费者执行任务。 执行策略
所谓的“任务递交和任务执行解耦”就是说你可以轻易地通过实现自己的Executor接口改变某个任务的执行策略。执行策略规定了what,where,when,how等问题
任务在哪个线程中执行任务以何种方式来执行允许多少个任务并发执行允许多少个任务排队如果因系统超负荷而需要被拒绝某个任务那么哪个任务会被选中作为牺牲品呢怎么把这个事件通知给应用程序呢执行任务之前或者之后需要做哪些额外工作线程池 对 每个任务创建一个线程 的优势
减少线程创建销毁的开销。提高响应速度
newFixedThreadPool随着任务的递交创建线程池直到达到上限后不再增加
newCachedThreadPool当当前的线程池大小超出处理任务所需数量时销毁一些空闲线程另一方面当需求增加时再创建新的线程对线程数量没有限制。
newSingleThreadExecutor 单线程执行器创建单个线程来处理任务任务保证是序列化处理的。
newScheduledThreadPool固定大小的线程池支持滞后的或者周期性的任务类似于定时器。
Executor的生命周期