substance
substance
全部文章
分类
未归档(185)
题解(7)
归档
标签
去牛客网
登录
/
注册
substance的博客
做最好的自己
全部文章
(共184篇)
线程池的源码
随便点击执行器所调用的方法:可以看到这些静态方法都返回线程池;并且这些线程池有着不同的构造方法,对应着不同的线程池; 1: 2: 3: 4: 5: 6: 7:线程池的参数介绍: handler:表示,线程的数量已达到最大,并且队列也满了;这是新来的线程需要拒绝掉;是一种拒绝的策略; 8...
2022-04-24
0
252
线程池
1.创建线程,销毁线程是十分消耗资源的,所以不妨为其创建一个“池子”,专门的存放这些线程,使用完毕之后也不销毁,而是保留在那边,等待下一次的使用;为了很好的管理线程; 2.jdk自带的线程池: a.newCachedThreadPool:创建一个可缓存的线程池,来一个任务就创建一个线程;但是执行完成...
2022-04-24
0
265
原子类
原子类:是指在多线程的环境下,原子类具有原子性,即表示当前的操作是不可被中断的。 常见的院子类: 使用原子类不加锁的方式,也不加volatile关键字,实现一个线程安全的加法器; package com.ydlclass.thread; import com.ydlclass.lock.Thre...
2022-04-24
0
280
lock()与tryLock()的区别(ReentrantLock)
首先观察公平锁或者非公平锁的lock()方法,这个方***直接调用acquire的方法,这个方***调用tryacquire()方法,在此之前不存在线程等待的过程。只有tryacquire失败之后才会存在线程的的挂起;所以使用lock方法一定让需要资源的线程获得锁; 而tryLock只是lock的一...
2022-04-24
0
769
公平锁和非公平锁的区别
公平锁源码: 非公平锁的源码: 为了看这个tryacquire: 第一:非公平锁获取锁的方式,如果资源是可用的,那么非公平锁上来就先试着cas改变资源的占用;失败了就调用acquire;但是公平锁不会抢着获取; 第二个:在tryAcquire尝试获得资源的时候,产生差异;非公平锁尝试获得资源...
2022-04-21
0
369
ReentrantLock:unlock()方法所做的事情;
2022-04-21
0
193
ReentrantLock之unlock()源码
1.lock()方法主要是使用sync调用release()方法;这个方法,不像之前acquire方法那样可能会出现不同得方法,release()方法是AQS的方法。 尝试释放锁,如果释放锁成功,则唤醒下一个等待的线程; tryRelease()主要是把资源被重入的次数依次减掉,如果当前的线程不...
2022-04-21
0
353
ReentrantLock源码图解
背景知识:AQS维护的status的几个状态即含义; cancelled:waitStatus值表示线程已经取消。 singal:waitStatus值,表示后继线程需要解除驻留。 condition:waitStatus值表示线程正在等待条件。 PROPAGATE:waitStatus值表示下一...
2022-04-20
0
273
AQS之ReentrantLock释放锁
点击进入release()函数 这个函数是一个AQS的方法,这些方法是父类实现的,不同得是加锁,解锁这些操作。这种方式体现了模板设计模式。 他会尝试去释放锁,释放成功会通知下一个等待者; 接着看tryRelease()干了什么工作:这个数字是加锁时候的一个反向操作的数字,由于线程重入概念的存在,并...
2022-04-20
0
295
aqs之ReentrantLock枷锁过程
ReentranLock部份源码:可以发现ReentrantLock本身并没有继承AQS,但是里面有个类叫做sync内部类继承了AQS; ReentrantLock总体上做了几件事情:1.构造,2加锁(加锁失败要入队,入队之后要阻塞,阻塞之后需要等待被唤醒。) 第二个内部类:(NonfairSyn...
2022-04-19
0
271
首页
上一页
5
6
7
8
9
10
11
12
13
14
下一页
末页