多线程
文章平均质量分 59
辣条涨价了
爱自己
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Synchronized和lock的原理和区别
一、Synchronized 1、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 · 1848 阅读 · 0 评论 -
线程的生命周期
线程的生命周期 14、线程的状态转换有什么?(生命周期) (1)新建状态(New) :线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。 (2)就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。 (3)运行状态(Running):线程获取CPU权限进行执行。需要注意的是,线程只能从就绪状态进入原创 2022-01-11 15:09:08 · 185 阅读 · 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 · 232 阅读 · 0 评论 -
死锁的条件
死锁的条件 15、什么情况下会产生死锁? 产生死锁的原因: (1) 因为系统资源不足。 (2) 进程/线程运行推进的顺序不合适。 (3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则 就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。 (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3) 原创 2022-01-11 15:13:01 · 463 阅读 · 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 · 3711 阅读 · 1 评论 -
了解线程池
什么是线程池: 线程池就是事先将多个线程对象放到一个容器中,当使用的时候就不用 new 线程而是直接去池中拿线程即可,节省了开辟子线程的时间,提高的代码执行效率 线程池的作用: 节省创建子线程的时间 线程复用 控制最大并发数 管理线程 自定义线程池: 1、yml配置 thread: executor: corePoolSize: 16 maxPoolSize: 32 maximumPoolSize: 1000L 2、ThreadProperties类 @Data @Component原创 2022-01-13 10:20:02 · 953 阅读 · 0 评论
分享