随笔分类 - 线程
包括线程与线程池
发表于 2023-11-18 14:54阅读:332评论:0推荐:1
摘要:谈谈 AQS AQS(AbstractQueuedSynchronizer)是JUC包下的一个抽象类。虽然是抽象类,但没有抽象方法,即便子类集成,也无法直接使用锁功能。AQS中关于锁的判断TryAcquire与TryRelease方法,默认都是报错,需要子类集成后进行重写,才能使用锁功能。 JUC包
阅读全文 »
发表于 2023-10-24 17:51阅读:9评论:0推荐:0
摘要:日常所说的“核心线程”、“非核心线程”是一个虚拟的概念,是为了方便描述而虚拟出来的概念 在代码中并没有标记哪些线程为“核心线程”或者“非核心线程”。所有线程都是一样的。 为什么使用线程池 减少线程的创建与销毁 减少cpu的资源切换。如果线程很多的情况下,cpu切换会很大消耗资源。线程池的存在可以有效
阅读全文 »
发表于 2023-10-10 17:35阅读:11评论:0推荐:0
摘要:举例说明 以 AtomicInteger 原子整型类为例,一起来分析下 CAS 底层实现机制。 atomicData.incrementAndGet() 源码如下所示: // 自增方法 public final int getAndIncrement() { for (;;) { int curre
阅读全文 »
发表于 2023-10-10 11:12阅读:126评论:0推荐:0
摘要:锁升级 锁升级,是JDK1.6版本中对于synchronized的优化。调查发现一般情况下锁的使用都是为了处理一些极端情况,但多时间,并不会出现并发争强的情况,直接是有synchronized比较重,会影响系统性能。 升级步骤: 无锁/匿名偏向锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 升级特
阅读全文 »
发表于 2022-06-15 11:50阅读:22评论:0推荐:0
摘要:线程创建 继承 Thread 类,本质是 Runable 的实现类 实现 Runnable 接口,重写 run() 方法 无返回值 无法将异常抛到外面,任何check Exception都需要在代码块中自行解决 异步执行,不阻塞主方法 实现 Callable 接口,重写 call() 方法 有返回值
阅读全文 »