substance
substance
全部文章
分类
未归档(185)
题解(7)
归档
标签
去牛客网
登录
/
注册
substance的博客
做最好的自己
全部文章
(共184篇)
aqs抽象队列同步器
aqs中维护了一个CLH双向链表实现的队列,队列的存储的对象就是线程对象。 可以查看aqs源码可以发现,这时一个双向队列,这个队列中维护了一个 AQS中的队列的节点的源码: static final class Node { /** Marker to indicate a nod...
2022-04-18
0
348
(volaile + cas实现线程安全的对数据修改的类与synchronized关键字实现的方式的不同)
多个线程并发执行的时候,volatile并不能保证原子性的,所以在一个线程希望对资源加1时,另一个线程可能也想做同样的操作。那么如何避免这种操作带来的问题。 cas的核心思想:(比较期望值是否和原值相同,如果不同则宣告失败从而不去赋值) 1.通过补偿重试的自旋方式实现这种操作的,好处是不用加锁,并...
2022-04-17
0
266
并发编程的三大特性
并发编程的三大特性:1.原子性;2可见性(JMM问题);3.有序性(指令重排) 1.原子性的概念:一件事情不可再分,在java中就是不可以再次分割,可以看作是一个步骤,或者多个步骤,但是要求是顺序不可变,同时不能被分割。整个操作是为一个整体。要么全部执行完成,别人不能被执行。 2.实现的原子性方式就...
2022-04-17
0
384
使用箭头函数实现读写锁的使用
package com.ydlclass.lock; import java.util.Random; import java.util.concurrent.locks.ReentrantReadWriteLock; import static java.util.concurrent.loc...
2022-04-17
0
330
JUC之读写锁(ReadWriteLock)
背景:比如电商平台对于商品信息的上架次数远远的小于商品的读的操作。如果一个对象只能在同一时间被一个线程读很显然不符合实际的需求。 读写锁的存在:可以保证再读的时候多线程同时读并且不允许写,在写的时候只能一个线程写,并且不可读。提升效率。 package com.ydlclass.lock; imp...
2022-04-17
0
383
Lock接口以及ReentrantLock实现类(可重入锁)
//目前只学了内置锁,即synchronize。只加了关键字就上了锁,并且解锁的过程不需要我们去管就可以了。还提供了Api,Lock接口实现; //Lock接口由几个方法;lock()获取锁,trylock()表示尝试获取锁,这种只有在锁空闲时才能获得;tryLock(),unLock()释...
2022-04-17
0
357
LockSupport工具类
public class LockSupport { //线程工具类,可以让线程在任意位置阻塞; public static void main(String[] args) throws InterruptedException { Thread thread = ...
2022-04-17
0
293
线程的退出
背景:一般的线程不需要我们去终止,正常的线程会在代码执行完毕之后自动的退出。但是一些特殊的线程,比如一个一直需要监视一个系统的业务逻辑的线程,我们现在需要手动的停掉监控线程,这时我们就可以让线程退出。 方法1(常用的方法):使用标志字段,在线程的外面使用一个循环嵌套住,接着在主线程中修改标志字段。但...
2022-04-17
0
284
线程类的常见方法
sleep方法:释放cpu资源,但是不会释放锁; yeild方法:释放cpu的资源,但是会保留cpu的执行资格;() public class YeildTest { //yeild方法的含义就是线程释放cpu的执行权限,但是依旧保留竞争cpu的资格 public static ...
2022-04-16
0
257
wait()与notify()
public class WaitTest { //wait,notify方法 //wait,notify方法在使用的时候有两个注意事项:1.线程的阻塞与唤醒是通过锁来实现的;即使用锁来调用wait,notify方法;2这种方式,必须要求 //锁对象在这个线程之中,并且一个线...
2022-04-16
0
283
首页
上一页
6
7
8
9
10
11
12
13
14
15
下一页
末页