
并发编程
文章平均质量分 84
本专栏详细介绍Java中的多线程高并发相关知识
王军新
互联网农民工~
展开
-
volatile关键字详解
volatile 关键字在并发三特性中只有可见性和有序性,所以并不能保证并发的安全,并发安全还是得使用synchronized 关键字来保证。原创 2024-07-16 15:49:08 · 305 阅读 · 0 评论 -
线程池的使用
以下是线程池的构造方法源码,我们依次解释如果当前任务队列待执行任务数量小于核心线程池数量,执行器总是优先创建一个任务线程如果当前任务队列待执行任务数量大于核心线程池数量,执行器总是优先从线程池中取一个空闲线程如果当前任务队列待执行任务数量大于核心线程池数量,且线程池中无空闲任务线程,将会创建一个任务线程,直到超出maximumPoolSize,如果超时maximumPoolSize,则任务将会被拒绝。原创 2024-07-11 15:27:04 · 461 阅读 · 0 评论 -
JUC包中的各种同步器
park(): 阻塞当前线程,直到unpark方法被调用或当前线程被中断,park方法才会返回。parkNanos(long nanos): 同park方法,nanos表示最长阻塞超时时间,超时后park方法将自动返回。单位是纳秒 ,1秒 = 100010001000 纳秒parkUntil(long deadline): 同park()方法,deadline参数表示最长阻塞到某一个时间点,当到达这个时间点,park方法将自动返回。(该时间为从1970年到现在某一个时间点的毫秒数)原创 2024-07-10 18:24:20 · 938 阅读 · 0 评论 -
并发编程之AQS详解
使用了一个int成员变量state来表示同步锁状态,通过内置的FIFO(first-in-first-out)同步队列来控制获取共享资源的线程。内部state 和Node 内部类的属性都被volatile 关键字修饰,在修改state 和 阻塞队列时 都使用CAS机制循环添加,保证并发安全。所以可以说AQS就是利用volatile 和CAS的实现。线程的阻塞方法都是使用的unsafe类进行的。进入到队列后,线程的阻塞和唤醒是使用的。内置的三个修改同步状态的方法。接下来先看下关键源码。原创 2024-07-04 16:38:17 · 273 阅读 · 0 评论 -
并发编程中的Synchronized锁详解
重量级锁对象的实现,采用C++ 编写,在Synchronized 同步的对象的对象头MarkWord中指针指向这个真正的对象。第三部分:填充字符,因为虚拟机要求对象字节必须是8字节的整数倍,填充字符就是用于凑齐这个整数倍的。第二部分:实例变量存储的是对象的属性信息,包括父类的属性信息,按照4字节对齐。Synchronized 的锁存在锁对象的对象头MarkWord中。第一部分:对象头,主要包括。由图中可用得出两个结论。原创 2024-07-04 15:45:43 · 637 阅读 · 0 评论 -
并发编程的三大特性
并发编程三大特性:原子性、可见性、有序性原创 2024-05-21 14:31:52 · 647 阅读 · 1 评论 -
多线程基础
Java中线程基础知识:包括线程的创建、启动、停止、线程调度、线程状态转换的内容原创 2024-05-18 14:31:35 · 400 阅读 · 0 评论