并发基础-第02章-启动线程的正确方式

2023-01-04
阅读 1 分钟
668
java线程启动是调用start()而非run()方法;run()方法直接调用是方法调用,并不是线程在调用;start()方法调用后也不是马上就会执行线程, 要看JVM如何调度和协调资源,适当时机才会调用线程.

并发基础-第01章-实现线程的正确方式

2023-01-04
阅读 3 分钟
1k
1. 问题的引出:实现线程有几种方式?2种?5种?正确答案:两种实现Runnable接口继承Thread类1.1 Thread类中的run()Thread类的源码: {代码...} Thread类有个Runnable的target引用,如果构造器传入了target且不为null,就执行它的run();但前提是它有机会执行--什么意思呢?1.2 既实现了Thread又实现了Runnable接口执行谁...

juc-AQS源码分析-1

2022-10-10
阅读 4 分钟
1k
AQS如果作为一个幼儿园老师来看,她的小名叫"锁"老师,手里拿一个"state"的玩具按钮,负责有维护孩子们玩玩具"先来后到"的秩序。如果把其他小孩叫"线程"小朋友,当他们一起玩儿滑滑梯时,每次只能上一个。此时就需要"锁"老师来守在滑滑梯口儿上:小"线程"们奔过来,谁先把"锁"老师手里的按钮state按亮了,谁就先上;按不...

ThreadPoolExecutor之-源码解析1

2020-06-02
阅读 2 分钟
1.4k
(1). 原子类型的整型值ctl(32位的AtomicInteger),绑定两个内容:高(左边)3位:runState, 表示线程池的执行状态; 见(2)低(右边)29位: workerCount, 标识任务数, 最大是2^29=5亿+;

Unsafe类功能之(6): 内存屏障-fence

2020-04-29
阅读 1 分钟
4.2k
loadFence() 表示该方法之前的所有load操作在内存屏障之前完成。(Ensures lack of reordering of loads before the fence with loads or stores after the fence.)

Unsafe类功能之(5): 线程的挂起和恢复

2020-04-29
阅读 1 分钟
2.8k
中断当前线程,直到满足以下条件之一返回:(1). 当前线程被别的线程 unpark(2). 当前线程被中断: interrupted(3). isAbsolute true: 绝对时间, 而且, 绝对时间点 time已经过去;(4). isAbsolute false: 不是绝对时间, 纳秒时长 time 已经过去;

Unsafe类功能之(4): CAS操作

2020-04-29
阅读 1 分钟
1.5k
认为 内存中对象o所在的内存空间, 定位到偏移量offset处, 能找到有int类型的属性, 且其值为expected, 若前面的这些条件成立, 则: 把对象o此处的 int 类型值 expected, 更新为新值 x;

Unsafe类功能之(3): 获取对象字段的偏移量(jdk使用频繁)

2020-04-29
阅读 1 分钟
2.1k
Unsafe类功能之(3): 获取对象字段的偏移量 此类方法在jdk使用频繁 1. 当前对象根据f字段获取偏移量 (jdk中多处用到, 用来获取对象中声明的实例变量-使用变量名) {代码...} 例如: AtomicInteger中获取 value 再如: ConcurrentHashMap 2.静态字段根据f字段获取偏移量 {代码...}

Unsafe类功能之(2): 对象属性值的 set/get/update

2020-04-29
阅读 3 分钟
1.6k
Unsafe功能之2: 对象属性值增改查 1. 对象属性值set 1.1 set 直接内存地址数据 设置直接内存地址上的指定类型的数据-address {代码...} 1.2 set 指定对象的偏移地址数据 设置指定对象的偏移地址上的指定类型的数据-(o, offset, x) {代码...} 2. 对象属性值 get 2.1 get指定内存地址数据(address) 获取指定内存地址上的指...

Unsafe类功能之(1): 内存分配-allocate

2020-04-29
阅读 1 分钟
2.3k
处置从allocateMemory 或 reallocateMemory 获得的内存块。 传递给此方法的 address 可以为null,在这种情况下,不采取任何措施。

Unsafe类功能之(7): 锁机制-monitor

2020-04-28
阅读 1 分钟
2.1k
tryMonitorEnter 试图锁定对象。返回true或false以指示锁是否成功。如果是,则必须通过 monitorExit 解锁该对象。

搬运openjdk8的sun.misc.Unsafe.java源码

2020-04-28
阅读 39 分钟
2.1k
下面的类是openjdk8中的sun.misc.Unsafe.java的源码, 链接来源:[链接] {代码...}

【Java多线程基础与并发编程学习笔记目录】

2020-04-28
阅读 1 分钟
2.3k
最近在学习两个并发教程, 过完第一遍, 感触颇多.最大的感触就是: 学习还是要系统, 针对性地练, 才好掌握.这里列个目录, 后续陆续记录每个知识点, 包括理论依据和代码案例, 以加深和巩固记忆. 所学课程链接: https://www.imooc.com/t/2854586