会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
18
19
20
21
22
23
24
25
26
···
33
下一页
2024年7月31日
IO体系
摘要: IO,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 Java 中是通过流处理IO 的,那么什么是流? 流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。 当程序需要读取数据的时候,
阅读全文
posted @ 2024-07-31 15:56 _Sylvan
阅读(34)
评论(0)
推荐(0)
2024年7月29日
生产者消费者
摘要: 生产者-消费者,实际上包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域,生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为;而消费者只需要从共享数据区中获取数据,不需要关心生产者的行为。如果共享数据区
阅读全文
posted @ 2024-07-29 11:34 _Sylvan
阅读(41)
评论(0)
推荐(0)
CopyOnWriteArrayList
摘要: ArrayList 是一个线程不安全的容器,如果在多线程环境下使用,需要手动加锁,或者使用 Collections.synchronizedList() 方法将其转换为线程安全的容器。否则,将会出现 ConcurrentModificationException 异常。 CopyOnWriteArr
阅读全文
posted @ 2024-07-29 10:30 _Sylvan
阅读(53)
评论(0)
推荐(0)
2024年7月27日
ConcurrentHashMap
摘要: ConcurrentHashMap 是 Java 并发包 (java.util.concurrent) 中的一种线程安全的哈希表实现。 HashMap 在多线程环境下扩容会出现 CPU 接近 100% 的情况,因为 HashMap 并不是线程安全的,我们可以通过 Collections 的Map<K
阅读全文
posted @ 2024-07-27 19:08 _Sylvan
阅读(45)
评论(0)
推荐(0)
并发容器
摘要: Java 的并发集合容器提供了在多线程环境中高效访问和操作的数据结构。这些容器通过内部的同步机制实现了线程安全,使得开发者无需显式同步代码就能在并发环境下安全使用,比如说:ConcurrentHashMap、阻塞队列和 CopyOnWrite 容器等。 java.util 包下提供了一些容器类(集合
阅读全文
posted @ 2024-07-27 16:34 _Sylvan
阅读(37)
评论(0)
推荐(0)
LockSupport
摘要: LockSupprot 用来阻塞和唤醒线程,底层实现依赖于 Unsafe 类(后面会细讲)。 该类包含一组用于阻塞和唤醒线程的静态方法,这些方法主要是围绕 park 和 unpark 展开。 public class Main { public static void main(String[] a
阅读全文
posted @ 2024-07-27 15:10 _Sylvan
阅读(45)
评论(0)
推荐(0)
ThreadLocal
摘要: ThreadLocal 是 Java 中提供的一种用于实现线程局部变量的工具类。它允许每个线程都拥有自己的独立副本,从而实现线程隔离,用于解决多线程中共享对象的线程安全问题。 通常,我们会使用 synchronzed 关键字 或者 lock 来控制线程对临界区资源的同步顺序,但这种加锁的方式会让未获
阅读全文
posted @ 2024-07-27 15:09 _Sylvan
阅读(41)
评论(0)
推荐(0)
ScheduledThreadPoolExecutor
摘要: 定时任务 ScheduledThreadPoolExecutor 类有两个用途:指定时间延迟后执行任务;周期性重复执行任务。 JDK 1.5 之前,主要使用Timer类来完成定时任务,但是Timer有以下缺陷: Timer 是单线程模式; 如果在执行任务期间某个 TimerTask 耗时较久,就会影
阅读全文
posted @ 2024-07-27 13:02 _Sylvan
阅读(28)
评论(0)
推荐(0)
ForkJoin框架
摘要: 并发编程领域的任务可以分为三种:简单并行任务、聚合任务和批量并行任务,见下图。 这些模型之外,还有一种任务模型被称为“分治”。分治是一种解决复杂问题的思维方法和模式;具体而言,它将一个复杂的问题分解成多个相似的子问题,然后再将这些子问题进一步分解成更小的子问题,直到每个子问题变得足够简单从而可以直接
阅读全文
posted @ 2024-07-27 12:28 _Sylvan
阅读(99)
评论(0)
推荐(0)
通信工具类
摘要: 类 作用 Semaphore 限制线程的数量 Exchanger 两个线程交换数据 CountDownLatch 线程等待直到计数器减为 0 时开始工作 CyclicBarrier 作用跟 CountDownLatch 类似,但是可以重复使用 Phaser 增强的 CyclicBarrier Sem
阅读全文
posted @ 2024-07-27 11:00 _Sylvan
阅读(27)
评论(0)
推荐(0)
Unsafe
摘要: Unsafe 基础 Unsafe 是 Java 中一个非常特殊的类,它为 Java 提供了一种底层、"不安全"的机制来直接访问和操作内存、线程和对象。正如其名字所暗示的,Unsafe 提供了许多不安全的操作,因此它的使用应该非常小心,并限于那些确实需要使用这些底层操作的场景。 Unsafe 在 st
阅读全文
posted @ 2024-07-27 02:16 _Sylvan
阅读(89)
评论(0)
推荐(0)
2024年7月26日
原子操作类Atomic
摘要: 原子操作的基本数据类型 基本类型的原子操作主要有这些: AtomicBoolean:以原子更新的方式更新 boolean; AtomicInteger:以原子更新的方式更新 Integer; AtomicLong:以原子更新的方式更新 Long; 这几个类的用法基本一致,这里以 AtomicInte
阅读全文
posted @ 2024-07-26 21:47 _Sylvan
阅读(111)
评论(0)
推荐(0)
BlockingQueue
摘要: BlockingQueue 是 Java 中的一个接口,它代表了一个线程安全的队列,不仅可以由多个线程并发访问,还添加了等待/通知机制,以便在队列为空时阻塞获取元素的线程,直到队列变得可用,或者在队列满时阻塞插入元素的线程,直到队列变得可用。 最常见的"生产者-消费者"问题中,队列通常被视作线程间的
阅读全文
posted @ 2024-07-26 21:31 _Sylvan
阅读(50)
评论(0)
推荐(0)
线程池
摘要: 使用线程池的好处 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 线
阅读全文
posted @ 2024-07-26 15:38 _Sylvan
阅读(27)
评论(0)
推荐(0)
2024年7月23日
Condition
摘要: Condition 接口一共提供了以下 7 个方法: await():线程等待直到被通知或者中断。类似于 Object.wait()。 awaitUninterruptibly():线程等待直到被通知,即使在等待时被中断也不会返回。没有与之对应的 Object 方法。 await(long time
阅读全文
posted @ 2024-07-23 16:32 _Sylvan
阅读(60)
评论(0)
推荐(0)
上一页
1
···
18
19
20
21
22
23
24
25
26
···
33
下一页
公告