Java并发

新建状态没有和操作系统底层线程关联,没有分配cpu。获得锁,调用wait方法等待条件满足,会进入waiting状态,进入waiting状态会释放锁,当被notify的时候被唤醒,然后去争抢锁,争抢锁成功了变成运行态,如果争抢锁不成功会进入blocking状态。

当核心线程都在繁忙,任务队列也放满了,再添加新任务,救急线程就上场。 救急线程受到3和4的影响,如果在此时间范围内,没有任务执行,救急线程就会溜溜球。

拒绝策略:核心线程繁忙,任务队列满了,不能再创建更多的救急线程。此时再来新任务,要使用拒绝策略。可以是抛异常,可以是让submit的对象自己执行,即callerRunsPolicy.把任务丢弃,或者把队列中最老的任务丢弃。一共四种拒绝策略。

 sync使用wait和notify实现同步,lock使用await,singnal实现同步.lock提供公平锁,sync只支持非公平锁,sync不支持打断,不支持超时.sync只有一共等待队列,lock支持多个等待队列.如果锁是非公平的:那么获取锁的线程不一定是等待队列中的线程。

 

ThreadLocal本质是线程独有的map,key设置为弱引用是为了gc的时候释放内存。 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值