随笔分类 -  线程

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

点击右上角即可分享
微信分享提示