JUC
文章平均质量分 92
UndefinedException
求求你们别卷了!!!
展开
-
JUC-9.“锁”事(显式锁与隐式锁/悲观锁与乐观锁/公平锁与非公平锁/可重入锁/读写锁(独占/共享/降级)/邮戳锁/死锁)、锁升级
有关Lock(显式锁)、synchronized(隐式锁)的内容前面章节已介绍...这里不再赘述。 认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。1.2 乐观锁 乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。 如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果数据已经被其他线程更新,则根据不同的实现方式执原创 2022-10-18 16:49:47 · 488 阅读 · 0 评论 -
JUC 8-ThreadLocal、Java对象内存布局与对象头、AbstractQueuedSynchronizer(AQS)
ThreadLocal 并不解决线程间共享数据的问题ThreadLocal 适用于变量在线程间隔离且在方法间共享的场景ThreadLocal 通过隐式的在不同线程内创建独立实例副本避免了实例线程安全的问题每个线程持有一个只属于自己的专属Map并维护了ThreadLocal对象与具体实例的映射,该Map由于只被持有它的线程访问,故不存在线程安全以及锁的问题ThreadLocalMap的Entry对的引用为弱引用,避免了ThreadLocal对象无法被回收的问题。原创 2022-10-17 21:40:22 · 360 阅读 · 0 评论 -
JUC-7.CAS与原子类
CAS是 compare and swap的缩写,中文翻译成比较并交换,实现并发算法时常用到的一种技术。它是一条CPU并发原语。 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新值,这个过程是原子的。它包含三个操作数——内存位置、预期原值及更新值。 执行CAS操作的时候,将内存位置的值与预期原值比较: 如果相匹配,那么处理器会自动将该位置值更新为新值, 如果不匹配,处理器不做任何操作,多个线程同时执行CAS操作只有一个会成功。 以原创 2022-10-17 17:23:37 · 330 阅读 · 0 评论 -
JUC-6. JMM(java内存模型)与Volatile
目录一、JMM1.1 Java内存模型Java Memory Model1.1.1 可见性1.1.2 原子性1.1.3 有序性1.2 多线程对变量的读写过程1.3 多线程先行发生原则之happens-before1.3.1 次序规则1.3.2 锁定规则1.3.3 volatile变量规则1.3.4传递规则1.3.5 线程启动规则(Thread Start Rule)1.3.6 线程中断规则(Thread Interruption Rule)1.3.7 线程终止规则(Thread Termination Ru原创 2022-10-17 11:30:57 · 232 阅读 · 0 评论 -
JUC-5.细说CompletableFuture
Future如获取异步任务的、的、判断任务、判断任务执行等。接口中定义了需要有返回值的任务需要实现的方法。比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,主线程就去做其他事情了,过了一会才去获取子任务的执行结果。例如我们调用get()方法是阻塞的。一旦调用get()方法,不管是否计算完成都会导致阻塞。并且不一定会获取到期望的结果,比如子线程当时还没有完成任务。若采取下面轮询的方式,先判断,再获取返回值,将。原创 2022-10-16 15:40:48 · 420 阅读 · 0 评论 -
JUC-4.初识Callable&Future/CompletableFuture
CompletableFuture 在 Java 里面被用于。原创 2022-10-16 14:44:02 · 131 阅读 · 0 评论 -
JUC-3.三大辅助类/阻塞队列/forkjoin
JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过 多时 Lock 锁的频繁操作。这三种辅助类为:•: 减少计数•: 循环栅栏•: 信号灯。原创 2022-10-16 14:39:03 · 343 阅读 · 0 评论 -
JUC-2. 初识可重入锁/读写锁
现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那 么频繁。(因为获取写锁的时候,如果发现当前的读锁被占用,就马上获取失败,不管读锁是不是被当前线程持有)。(获取读锁时如果发现写 锁被占用,只有写锁没有被当前线程占用的情况才会获取失败)。针对这种场景,JAVA 的并发包提供了读写锁。,当它同时获取了写锁和读锁后,还可以先释放。其他线程对该资源进行读和写的操作了。一个资源没有任何问题,所以应该。但是如果一个线程想去。, 它表示两个锁,一个是。, 或者==有写请求,但。原创 2022-09-28 10:36:47 · 249 阅读 · 0 评论 -
JUC-1.基本概念/Lock与synchronized/线程间通信/集合的线程安全/线程池/LockSupport与线程中断
JUC 就是工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程— —资源分配的最小单位。:系统分配的基本单元,或者说进程之内独立执行的一个 单元执行流。线程——。:同一时刻多个线程在访问同一个资源,多个线程对一个点。例子:春运抢票 ...:多项工作一起执行,互不干扰,之后再汇总。例子:泡方便面,电水壶烧水,一边撕调料倒入桶中:平时用到的普通线程,自定义线程守护线程。原创 2022-09-27 09:58:19 · 303 阅读 · 0 评论