JAVA-多线程
文章平均质量分 76
记录下对JAVA多线程的一些理解
baiyang0413meng
这个作者很懒,什么都没留下…
展开
-
深入理解AQS之独占锁ReentrantLock源码分析
- AQS全称AbstractQueuedSynchronizer,是大多JUC并发包实现所依赖的抽象同步框架,它是MESA在java层面抽象层的管程实现,其中包括(条件队列,等待队列,等待唤醒,同步状态等)原创 2023-09-19 12:26:43 · 47 阅读 · 0 评论 -
线程池原理
ctl字段二进制是32位的,前3位是线程的运行状态,后29位是线程池开启的线程数,所以线程数最多能开2的29次方个原创 2023-09-19 12:23:55 · 36 阅读 · 0 评论 -
java-thread-cas
通常指这样一种原子操作,内存中存的一个值与期望修改的值做比较,如果相同就给内存中的值设置一个新值原创 2023-09-19 12:22:12 · 43 阅读 · 0 评论 -
Atomic原子操作类
上述方法调用了Unsafe类的getAndAddLong方法,该方法内部是个native方法,它的逻辑是采用自旋的方式不断更新目标值,直到更新成功。在并发量较低的环境下,线程冲突的概率比较小,自旋的次数不会很多。但是,高并发环境下,N个线程同时进行自旋操作,会出现大量失败并不断自旋的情况,此时AtomicLong的自旋会成为瓶颈。概念:在J.U.C下的atomic包提供了一系列的操作简单,性能高效,并能保证线程安全的类去更新基本类型变量,数组元素,引用类型以及更新对象中的字段类型。原创 2023-09-19 12:18:32 · 36 阅读 · 0 评论 -
进程&线程&协程&用户态&内核态
进程&线程&协程&用户态&内核态原创 2023-09-19 12:14:55 · 51 阅读 · 0 评论 -
硬件层面缓存一致性
位于cpu与主内存之间一种容量较小但速度很快的存储器,主要是查内存的速度远远大于查缓存的速度,需要增加缓存来存储刚用过的数据或循环使用的一部分数据。cpu为了加快速度,减少cpu与内存的交互,一般在cpu上集成了多级缓存架构,常见的为三级缓存结构。局部性原理 : cpu访问存储,无论是取数据或是取cpu指令,都趋于聚集在一片连续的区域。原创 2023-09-19 12:09:55 · 46 阅读 · 0 评论 -
理解JMM内存模型
MM为了使java具有跨平台特性屏蔽了各种硬件和操作系统的内存访问差异,规定了共享变量的访问与同步,围绕原子性,有序性,可见性展开原创 2023-09-19 12:03:07 · 38 阅读 · 0 评论 -
线程生命周期&线程交互方式
处于休眠中的线程被中断,线程是可以感受到中断信号的,并且会抛出一个 InterruptedException 异常,同时清除中断信号,将中断标记位设置成 false。概念:LockSupport是JDK中用来实现线程阻塞和唤醒的工具,线程调用park则等待许可,调用unpark则为指定线程提供许可。实现callable接口结合线程池使用,有返回值,抛异常,线程池里面的线程也是new thread实现的。中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而需要被中断的线程自己处理。原创 2023-09-19 11:57:47 · 53 阅读 · 0 评论