线程池

1.为什么要使用线程池?
线程的创建和销毁需要映射到操作系统,浪费时间。线程池通过保持一定的核心线程数量,重复利用线程。
a.线程是可重复利用的吗?
thread相当于一个代理,run方法的执行其实是runnable 对象重写的run方法。
b.线程如何重复利用?
c.单核cpu执行多线程有意义吗?
有 在某线程阻塞时 可以将时间片让给其他线程 从而提高cpu利用率
2.线程池是可以共同执行一个runnable对象吗?
案例:线程池多个线程可以同时执行一个runnable对象
难道不应该一个runnable对象对应一个线程吗?
3.阻塞队列为什么都是runnable对象,他们有继承runnable接口吗?

4.线程池实现相关类

ThreadPoorExecutor类
参数:poolsize,maxPoolSize,hashset《worker》workers,poolCoreSize,keepalivetime,等等
方法:execute(Runnable … )
内部类:Worker{
thread t
Runnable task
addThread()
run()

5.机制
线程建立:
Execute===》AddWorker====》Worker.run()(循环)====》task.run()
AddWorker机制:核心线程满足不了后使用等待队列,队列放不下增加线程,线程增加后解决不了就拒绝。同时要考虑线程池状态。注意,线程池的状况是动态的,每一步操作后都要确认ctl(线程数workerCount和runState)
addworker状态added后,线程已就绪

a.如何知道task已经执行完?run执行完就结束吧
b.task.run后task=get task()不断接受任务吗
c.一个任务的所有可能性:作为第一个任务建立线程同时被执行;被放入等待队列;从等待队列被取出执行。
d.为什么要使用worker内部类?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值