并发编程
文章平均质量分 92
程序员波特
全网同名,资深Java开发。专注分享Java后端、中间件、架构设计、云原生、面试等干货知识。关注我,一起成长
展开
-
【并发编程】源码分析角度来看看ConditionObject
先look一下Condition的应用System.out.println("子线程获取锁资源并await挂起线程");try {try {System.out.println("子线程挂起后被唤醒!持有锁资源");}).start();System.out.println("主线程等待5s拿到锁资源,子线程执行了await方法");System.out.println("主线程唤醒了await挂起的子线程");原创 2024-04-21 21:31:49 · 351 阅读 · 0 评论 -
【并发编程】锁的分类以及源码解析
AQS就是抽象类,AQS其实就是JUC包下的一个基类,JUC下的很多内容都是基于AQS实现了部分功能,比如,阻塞队列,Semaphore等等都是基于AQS实现。首先AQS中提供了一个由volatile修饰,并且采用CAS方式修改的int类型的state变量。其次AQS中维护了一个双向链表,有head,有tail,并且每个节点都是Node对象AQS内部结构和属性这个是非公平锁的流程// 释放锁资源不分为公平锁和非公平锁,都是一个sync对象// 释放锁的核心流程。原创 2024-04-21 20:59:45 · 767 阅读 · 0 评论 -
【并发编程】三大基础特性
* 原子性*原创 2024-04-19 21:57:30 · 890 阅读 · 0 评论 -
【并发编程】线程的基础概念
JVM会在程序中没有非守护线程时,结束掉当前JVM主线程默认是非守护线程,如果主线程执行结束,需要查看当前JVM内是否还有非守护线程,如果没有JVM直接停止。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。比如要处理一个网络等待的操作,开启一个线程去处理需要网络等待的任务,让当前业务线程可以继续往下执行逻辑,效率是可以得到大幅度提升的。启动线程是调用 start方法,这样会创建一个新的线程,并执行线程的任务。原创 2024-04-19 21:55:28 · 654 阅读 · 0 评论 -
【并发编程】线程的基础概念
JVM会在程序中没有非守护线程时,结束掉当前JVM主线程默认是非守护线程,如果主线程执行结束,需要查看当前JVM内是否还有非守护线程,如果没有JVM直接停止。如果在main线程中调用了t1.join(),那么main线程会进入到等待状态,需要等待t1线程全部执行完毕,在恢复到就绪状态等待CPU调度。比如要处理一个网络等待的操作,开启一个线程去处理需要网络等待的任务,让当前业务线程可以继续往下执行逻辑,效率是可以得到大幅度提升的。启动线程是调用 start方法,这样会创建一个新的线程,并执行线程的任务。原创 2024-03-30 15:10:29 · 964 阅读 · 0 评论