
并发编程
文章平均质量分 94
Lin_Miao_09
这个作者很懒,什么都没留下…
展开
-
第二十四章 Java多线程--异步编程-CompletableFuture
CompletableFuture 是 Java 8 引入的一个类,用于简化异步编程模型。它是 Future 接口的一个增强版本,提供了更加丰富的功能和更灵活的用法。CompletableFuture 允许开发者以一种声明式和链式的方式编写异步代码,这样可以提高代码的可读性和可维护性。CompletableFuture 同时实现了 Future 和 CompletionStage 两个接口。原创 2024-11-29 09:28:46 · 1125 阅读 · 0 评论 -
第二十三章 Java多线程--异步编程-FutureTask
FutureTask 是 Java 并发工具包 java.util.concurrent 中的一个重要组件,它实现了 RunnableFuture 接口,后者继承了 Runnable 和 Future 接口。这意味着 FutureTask 不仅可以作为一个任务被线程执行,还可以用来获取异步计算的结果。FutureTask 主要用于封装那些可以异步执行的任务,并且可以在任务完成后获取任务的执行结果。原创 2024-11-27 08:21:15 · 1238 阅读 · 0 评论 -
第二十二章 Java多线程--JUC并发工具-Semaphone
Semaphore(信号量)是Java并发工具包java.util.concurrent中的一个重要组件,用于控制对共享资源的并发访问。它通过维护一个内部计数器来跟踪可用资源的数量,从而控制对资源的访问。Semaphore特别适用于限制同时访问某一资源的线程数量,确保资源不会被过度使用,从而提高系统的稳定性和性能。原创 2024-11-27 08:19:44 · 964 阅读 · 0 评论 -
第二十一章 Java多线程--JUC并发工具-CyclicBarrier
CyclicBarrier 是 Java 并发工具类中的一员,它位于 java.util.concurrent 包内。CyclicBarrier 的名字来源于两个词:“Cyclic”意为循环,意味着这个屏障可以被重用;“Barrier”则是屏障的意思,用来形容多个线程到达一个共同点时的行为,就像一道障碍,所有线程必须都到达才能一同越过这道障碍继续执行。原创 2024-11-25 08:11:57 · 847 阅读 · 0 评论 -
第二十章 Java多线程--JUC并发工具-CountDownLatch
CountDownLatch 是 Java 并发工具包中一个非常实用的工具类,它通过定义一个计数器和阻塞队列实现了线程间的同步与协作。4 它的主要作用是让一个或多个线程等待其他线程的一系列操作完成。这种机制特别适用于需要确保一系列任务全部完成后再执行特定操作的场景。原创 2024-11-25 08:11:14 · 1267 阅读 · 0 评论 -
第十九章 Java多线程--并发集合-CopyOnWriteArrayList
CopyOnWriteArrayList 进行写操作(如添加、删除元素)时,它会创建一个新的数组副本,并在新数组上进行操作,最后将引用指向新的数组。这种机制使得 CopyOnWriteArrayList 在读多写少的场景下表现优异,因为读操作不需要加锁,而写操作虽然需要创建新数组,但频率较低。原创 2024-11-21 08:13:32 · 754 阅读 · 0 评论 -
第十八章 Java多线程--并发集合-ConcurrentHashMap
ConcurrentHashMap 是 Java 并发编程中一个重要的工具类,它提供了一个线程安全的哈希表实现,适用于多线程环境。相比于 HashMap,它提供了更好的并发性能;相比于 HashTable,它在设计上更先进,性能也更优越。原创 2024-11-21 08:08:15 · 1254 阅读 · 0 评论 -
第十七章 Java多线程--线程池-ScheduledThreadPoolExecutor
ScheduleThreadPoolExecutor 是 Java 平台上的 java.util.concurrent 包中的一个类,它是一个支持定时及周期性任务执行的线程池。ScheduleThreadPoolExecutor 实现了 ExecutorService 接口,并且扩展了 ThreadPoolExecutor,因此它不仅可以用来执行普通的异步任务,还可以调度任务在给定延迟后运行或定期运行。原创 2024-10-18 08:17:10 · 1134 阅读 · 0 评论 -
第十六章 Java多线程--线程池-ThreadPoolExecutor
ThreadPoolExecutor 是 Java 中 java.util.concurrent 包下提供的一个线程池实现类,它继承自 AbstractExecutorService 并实现了 ExecutorService 接口。ThreadPoolExecutor 提供了一个高级别的抽象来管理和执行任务,允许开发者自定义线程池的行为,包括但不限于线程池的大小、线程的存活时间、任务队列类型、线程工厂以及拒绝策略等原创 2024-10-18 08:12:39 · 1355 阅读 · 0 评论 -
第十五章 Java多线程--线程池
Java 中的线程池是一种管理执行线程的方式。使用线程池可以有效地管理和控制活动线程的数量,提高系统的响应性和可用性。Java 提供了几个类和接口来帮助创建和管理线程池,这些主要位于 java.util.concurrent 包中。原创 2024-10-11 08:11:33 · 1162 阅读 · 0 评论 -
第十四章 Java多线程--阻塞队列--SynchronousQueue
SynchronousQueue是Java并发包java.util.concurrent中的一种特殊的BlockingQueue实现类。它并不像其他的队列那样拥有固定的容量大小,而是仅仅充当生产者和消费者之间的“传递”作用。当一个元素被放入队列时,必须立即有一个消费者来获取它,否则生产者的线程将会阻塞。同样地,如果试图从队列中取出一个元素,那么必须立即有一个生产者来放入一个元素,否则消费者的线程也会被阻塞。原创 2024-10-11 08:02:24 · 1118 阅读 · 0 评论 -
第十三章 Java多线程--阻塞队列--DelayQueue
DelayQueue 是 Java 中的一个特殊类型的无界阻塞队列(BlockingQueue),它持有的是 Delayed 类型的元素。这个队列中的元素只有当其延迟期满时才能被消费者线程消费。每个提交到 DelayQueue 中的元素都会被赋予一个延迟时间(以未来的时间点为基准),当当前时间超过这个延迟时间之后,该元素就可以从队列中拿出了。原创 2024-09-27 08:13:12 · 1176 阅读 · 0 评论 -
第十二章 Java多线程--阻塞队列--PriorityBlockingQueue
PriorityBlockingQueue 是基于优先级堆实现的,可以保证具有优先级的元素能够优先出队。它支持等待的线程获取元素,并且只有在队列为空的时候才会阻塞;同样地,当队列满的时候,添加操作也会阻塞(虽然由于它是无界的,这种情况很少发生)。原创 2024-09-27 08:12:30 · 1293 阅读 · 0 评论 -
第十一章 Java多线程--阻塞队列--LinkedBlockingQueue
LinkedBlockingQueue 具有两个端点:队头 (head) 和队尾 (tail),其中队头是队列中最长的元素,队尾是最短的元素。当队列为空时,take() 方法会阻塞;当队列满时,put() 方法会阻塞,从而协调生产者和消费者之间的同步问题。原创 2024-09-18 09:30:48 · 675 阅读 · 0 评论 -
第十章 Java多线程--阻塞队列--ArrayBlockingQueue
ArrayBlockingQueue 是基于数组的有界阻塞队列。此集合类保证它的元素按照 FIFO(先进先出)原则进行排序。当构造 ArrayBlockingQueue 实例时,必须指定其容量大小,并且一旦创建就不能更改。原创 2024-09-11 08:12:48 · 1022 阅读 · 0 评论 -
第九章 Java多线程--锁--深入ReentrantReadWriteLock
ReentrantReadWriteLock 是 Java 并发编程中的一种锁机制,它提供了比简单的互斥锁更细粒度的锁定策略。这种类型的锁允许多个读取者同时访问共享资源(读-读共享),但是一次只有一个写入者可以访问该资源(写-写独占)。此外,在任何写入者访问资源期间,不允许任何读取者访问。原创 2024-08-30 06:48:03 · 1201 阅读 · 0 评论 -
第八章 Java多线程--锁--深入ReentrantLock
深入学习ReentrantLock原创 2024-08-11 17:30:11 · 1108 阅读 · 0 评论 -
第七章 Java多线程--锁--深入synchronized
synchronized是Java语言的关键字之一,用于实现线程同步和互斥,以防止多个线程同时访问共享资源导致的数据不一致问题。原创 2024-07-12 07:39:59 · 1323 阅读 · 0 评论 -
第六章 Java多线程--锁--锁的分类
Java并发编程中锁是用于控制多线程对共享资源访问的重要机制。在Java中,有几种不同的锁机制可以使用,从低级的java.lang.Object类中的synchronized关键字到更高级的java.util.concurrent.locks包中的Lock接口和其实现。原创 2024-07-12 07:39:09 · 708 阅读 · 0 评论 -
第五章 Java多线程--并发编程的三大特性--有序性
.java文件中的内容会被编译,在执行前需要再次转为CPU可以识别的指令,CPU在执行这些指令时,为了提升执行效率,在不影响最终结果的前提下(满足一些要求),会对指令进行重排。原创 2024-07-11 09:30:03 · 943 阅读 · 0 评论 -
第四章 Java多线程--并发编程的三大特性--可见性
可见性问题是基于CPU位置出现的,CPU处理速度非常快,相对CPU来说,去主内存获取数据这个事情太慢了,CPU就提供了L1,L2,L3的三级缓存,每次去主内存拿完数据后,就会存储到CPU的三级缓存,每次去三级缓存拿数据,效率肯定会提升。原创 2024-07-09 09:27:59 · 1223 阅读 · 0 评论 -
第三章 Java多线程--并发编程的三大特性--原子性
原子性指一个操作是不可分割的,不可中断的,不受其他线程影响。原创 2024-07-08 09:30:37 · 792 阅读 · 0 评论 -
第二章 Java多线程--线程的使用
使用线程时,要特别注意线程安全、同步和通信,以及合理利用线程池来管理线程资源,避免资源浪费和性能瓶颈。此外,对线程中的异常进行适当的处理也是至关重要的。原创 2024-06-24 11:41:03 · 844 阅读 · 0 评论 -
第一章 Java多线程--线程的创建
并发编程是一种软件设计技术,它允许程序同时执行多个计算任务,从而充分利用现代多核处理器的能力,提高程序的响应性和效率。在并发编程中,线程是最小的可调度执行单元,它是进程内的一个独立的控制流。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间,但各自有自己的执行栈和程序计数器。原创 2024-06-24 09:30:53 · 893 阅读 · 0 评论