
多线程
文章平均质量分 92
巡了南山巡北山
这个作者很懒,什么都没留下…
展开
-
Java线程池
构造方法名称类型含义int核心线程数数int最大线程池数long线程最大空闲时间unitTimeUnit时间单位workQueue线程等待队列线程创建工厂handler拒接策略拒绝策略拒绝行为抛出RejectedExecutionException什么也不做,直接忽略丢弃执行队列中最老的任务,尝试为当前提交的任务腾出位置直接由提交任务者执行这个任务线程池工作流程:创建多少个线程合适。原创 2022-10-19 14:36:42 · 313 阅读 · 0 评论 -
多线程基础
当sleep() 状态超时,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。当线程对象调用了start()方法之后,该线程就进入就绪状态。下图显示了一个线程完整的生命周期。等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。一个运行状态的线程完成任务或者其他终止条件发生时,该线程就切换到终止状态。原创 2022-10-19 14:34:45 · 100 阅读 · 0 评论 -
ReentrantLock
ReentrantLock底层基于AbstractQueuedSynchronizer(AQS)实现,AQS抽象类定义了一套多线程访问共享资源的同步模板,是一个依赖状态(state)的同步器。解决了实现同步器时涉及的大量细节问题,能够极大地减少实现工作,简单的说,AQS为加锁和解锁过程提供了统一的模板函数,只有少量细节由子类自己决定。对应的设计模式就是模版模式一般通过定义内部类Sync继承AQS,将同步器所有调用都映射到Sync对应的方法;原创 2022-10-16 17:22:21 · 891 阅读 · 0 评论