JUC 并发编程
文章平均质量分 69
JUC 并发编程
BLUcoding
这个作者很懒,什么都没留下…
展开
-
JUC并发编程_Lock锁
Java中的Lock锁是包下的一个接口,它提供了比关键字更灵活的锁定机制。原创 2024-09-29 18:59:38 · 730 阅读 · 0 评论 -
JUC并发编程_自旋锁
【代码】JUC并发编程_自旋锁。原创 2024-09-28 18:42:28 · 182 阅读 · 0 评论 -
JUC并发编程_深入理解CAS
解决ABA问题的一种常见且有效的方法是使用带有版本号或时间戳的原子操作,这样可以确保在比较并交换(CAS)操作时,不仅能检查值是否相等,还能检查该值自上次读取以来是否未被其他线程修改过。:如果某个线程将内存位置的值从A改为B,然后又改回A,此时另一个线程使用CAS进行检查时会认为该值没有变化,但实际上它已经变化过了。类,它正是为了解决ABA问题而设计的,它在设置值的时候,除了要校验预期原值,还要校验版本号是否变更。:CAS操作只能保证单个共享变量的原子操作,对于多个共享变量,CAS无法保证其原子性。原创 2024-09-28 18:23:59 · 711 阅读 · 0 评论 -
JUC并发编程_实现单例模式
【代码】JUC并发编程_实现单例模式。原创 2024-09-26 14:26:13 · 224 阅读 · 0 评论 -
JUC并发编程_JMM 与 Volatile
期望执行的顺序是:1234,实际执行的顺序可能会变成 2134、1324,但编译器会保证顺序不是 4123,不会影响执行结果。源代码 --> 编译器优化的重排 --> 指令并行也可能会重排 --> 内存系统也会重排 --> 执行。型的变量来说,load、store、read和write操作在某些平台上允许例外)线程在执行任务的时候,不能被打扰的也不能被分割。正常的结果: x = 0;:你写的程序,计算机并不是按照你写的那样去执行的。指令重排导致的诡异结果: x = 2;(对于double和long类。原创 2024-09-26 14:05:37 · 812 阅读 · 0 评论 -
JUC并发编程_ForkJoin
JUC并发编程_ForkJoinForkJoin 的基本概念ForkJoin 的基本概念核心思想:分而治之(Divide and Conquer),即将大任务分解成小任务,并行处理后再合并结果应用场景:适用于递归分解型的任务,如排序、归并、遍历等,也适用于数组处理、并行化算法实现和大数据处理等领域原创 2024-09-26 13:16:29 · 206 阅读 · 0 评论 -
JUC并发编程_四大函数式接口和 Stream 流式计算
接受单个输入参数并返回布尔值结果。主要用于条件判断,比如检查字符串是否为空、数字是否大于某个值等。不接受任何参数但返回某种类型结果,主要用于提供数据,比如生成随机数、获取当前时间等。接受单个输入参数但不返回任何结果,主要用于执行某些操作,比如打印日志、发送数据等。接受一个输入参数并返回结果。主要用于转换数据,比如字符串转大写、数字加一等。原创 2024-09-24 23:02:23 · 250 阅读 · 0 评论 -
JUC并发编程_线程池
Java中的线程池主要由 java.util.concurrent 包下的Executor、ExecutorService、ThreadPoolExecutor等接口和类提供支持。其中,ThreadPoolExecutor是线程池的核心实现类。Executor:线程池的顶级接口,定义了execute(Runnable command)方法,用于提交任务。原创 2024-09-24 13:19:22 · 468 阅读 · 0 评论 -
JUC并发编程_阻塞队列 BlockingQueue
通过阻塞等待机制,阻塞队列能够自动平衡生产者和消费者的速度差异,防止生产者过快导致队列溢出,或消费者过慢导致队列空置。:Java中的线程池使用了阻塞队列来管理任务队列,当线程池中的线程数达到最大值时,新的任务会被放入阻塞队列中等待执行。生产者-消费者模式:阻塞队列支持生产者-消费者模式,即生产者向队列中添加元素,消费者从队列中取出元素。当队列满时,如果线程尝试向队列中添加元素,该线程将被阻塞,直到队列中有空间可用。当队列空时,如果线程尝试从队列中移除元素,该线程将被阻塞,直到队列中有元素可取。原创 2024-09-24 12:13:19 · 344 阅读 · 0 评论 -
JUC并发编程_ReadWriteLock
通过合理地使用读写锁,可以显著提高程序的并发性能和资源的利用率。当没有线程持有写锁时,读锁可以被多个线程同时获取,这提高了并发读取的效率。(Write Lock):写锁是独占的,当一个线程获得写锁后,其他线程无法获得读锁或写锁。确保每个锁都有对应的解锁操作,并且锁的获取顺序在多个线程中保持一致。:ReentrantReadWriteLock支持公平锁和非公平锁两种模式,可以根据需要选择合适的模式。数据保护:确保在写线程对数据进行修改时,能够排他性地访问数据,避免数据不一致的问题。是一个接口,它提供了。原创 2024-09-24 12:02:28 · 372 阅读 · 0 评论