多线程
文章平均质量分 59
辣条涨价了
爱自己
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Synchronized和lock的原理和区别
一、Synchronized1、synchronized原理:1.1、方法级的同步锁非静态同步方法锁的是当前对象public class MyLock { public static void main(String[] args) throws InterruptedException { Phone phone = new Phone(); new Thread(()->{ phone.sendEmail();原创 2022-01-13 14:10:18 · 1801 阅读 · 0 评论 -
线程的生命周期
线程的生命周期14、线程的状态转换有什么?(生命周期)(1)新建状态(New) :线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。(2)就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。(3)运行状态(Running):线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入原创 2022-01-11 15:09:08 · 160 阅读 · 0 评论 -
AQS的整理
1、可重入锁可重入锁:一个线程获取外部方法的锁后,可以直接获取内层方法的锁(两个锁必须是同一个锁对象)synchronized和ReentrantLock都是可重入锁避免一定程度的死锁lock加锁和解锁必须成对出现。少了unlock()会使其他线程阻塞。public class RentrantLock { public static void main(String[] args) { ReentrantLock lock = new ReentrantLock()原创 2022-01-15 08:15:01 · 208 阅读 · 0 评论 -
死锁的条件
死锁的条件15、什么情况下会产生死锁?产生死锁的原因:(1) 因为系统资源不足。(2) 进程/线程运行推进的顺序不合适。(3) 资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 原创 2022-01-11 15:13:01 · 443 阅读 · 0 评论 -
redisson的分布式锁的使用
redisson的使用:1、引入依赖 <!-- redisson 分布式锁--> <dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.15.3</version> </dep原创 2022-01-09 15:10:01 · 3624 阅读 · 1 评论 -
了解线程池
什么是线程池:线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用 new线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率线程池的作用:节省创建子线程的时间线程复用控制最大并发数管理线程自定义线程池:1、yml配置thread:executor: corePoolSize: 16 maxPoolSize: 32 maximumPoolSize: 1000L2、ThreadProperties类@Data@Component原创 2022-01-13 10:20:02 · 911 阅读 · 0 评论
分享