
并发编程
文章平均质量分 93
他叫阿来
这个作者很懒,什么都没留下…
展开
-
java线程状态及线程相关常用方法
中定义),在任意一个时间点中,一个线程只能有且只有其中的一种状态,并 且可以通过特定的方法在不同状态之间转换。这两个超时方法表示,如果线程thread在给定的超时时间里没有终止,那么将会从该超时方法中返回。方法会释放对象的锁,进入 WaitSet 等待区,从而让其他线程就机会获取对象的锁。从上面的断点可以看出,执行了park方法的线程属于WAIT状态。方法的调用时不要求获取锁,调用后,并不会释放持有的锁。有时限的等待, 到 n 毫秒后结束等待,或是被。这两个方法时Object中的方法。原创 2024-06-04 15:03:26 · 945 阅读 · 0 评论 -
CAS操作
CAS 指令包含 3个参数:共享变量的内存地址 A、用于比较的值 B 和共享变量的新值 C;并且只有当内存中地址 A 处的值等于 B 时,才能将内存中地址 A 处的值更新为新值 C。CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次尝试。利用CPU的CAS指令,同时借助JNI来完成Java的非阻塞算法,实现原子操作,其它原子操作都是利用类似的特性完成的。类型的CAS原子操作。原创 2024-05-23 15:01:59 · 765 阅读 · 0 评论 -
Java内存模型
在并发编程中,需要处理两个关键问题:**线程之间如何通信及线程之间如何同步**。Java虚拟机规范定义了一种Java内存模型(Java Memory Model,JMM)来**屏蔽各种硬件和操作系统的内容访问差异,以实现让java程序在各种平台下都能达到一致的内存访问效果**。Java 内存模型规范了 JVM 如何提供**按需禁用缓存和编译优化**的方法。具体来说,这些方法包括 `volatile`、`synchronized` 和 `final` 三个关键字,以及六项 Happens-Before 规原创 2024-05-23 14:23:22 · 1399 阅读 · 1 评论 -
synchronized及锁优化
1. synchronized是基于进入与退出监视器对象(Monitor)来实现的,每个java对象都有一个Monitor对象。2. Monitor依赖于操作系统底层实现3.开启偏向锁的情况下(默认是开启的),锁状态演化顺序为 偏向锁,轻量级锁,重量级锁4. 锁的各种优化措施,是为了避免线程从用户态进入到内核态,从而提高效率原创 2024-05-22 15:35:43 · 1084 阅读 · 0 评论 -
java线程池
在 HotSpot VM 的线程模型中,Java 线程被一对一映射为内核线程。Java 在使用线程执行程序时,需要创建一个内核线程;当该 Java 线程被终止时,这个内核线程也会被回收。因此 Java 线程的创建与销毁将会消耗一定的计算机资源,从而增加系统的性能开销。为了解决上述两类问题,Java 提供了线程池概念,线程池的作用总结如下:1. 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2. 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。3. 提高线程原创 2024-05-21 17:03:29 · 578 阅读 · 0 评论