
JUC系列
文章平均质量分 91
Java高并发学习
何苏三月
兔子BUFF加持
展开
-
11 - ThreadLocal(JUC系列)
顾名思义,也叫做线程局部变量。每个 Thread 线程内部都有自己的实例副本,且该副本只能由当前 Thread 使用。这是也是 ThreadLocal 命名的由来。既然每个 Thread 线程有自己的实例副本,且其它 Thread 不可访问,那就不存在多线程间共享的问题。ThreadLocal是一种可以为每个线程提供变量副本的类,使得每个线程在某一时间访问到的并不是同一个对象。这样可以隔离多个线程对数据的共享,减少了线程同步所带来的性能消耗,也减少了线程并发控制的复杂度。原创 2023-03-16 14:03:13 · 204 阅读 · 0 评论 -
10 - 原子类(JUC系列)
原子类是CAS思想的应用!如果不清楚CAS可查看上一章节。所谓原子类,前面也说过了,就是指包下的所有的类:学习上,都是相通的,没必要挨个去学习。原创 2023-03-16 11:27:26 · 373 阅读 · 0 评论 -
09 - CAS (JUC系列)
即Compare and Swap,比较并交换。是实现并发算法时常用到的一种技术。内存位置预期原值更新值执行CAS操作的时候,将内存位置的值与预期原值比较。如果匹配,那么处理器会自动将该位置的值更新为新值。如果不匹配,处理器不做任何处理,多个线程同时执行CAS操作只有一个会成功!举个例子:并发的A、B、C三个线程,要来操作主物理内存中的某个变量的值5。进行++操作。A线程先将主物理内存的值5读取到,作为它的预期原值。然后进行++操作,得到更新值6。原创 2023-03-15 23:03:53 · 207 阅读 · 0 评论 -
08 - JMM、volatile(JUC系列)
JMM,即Java Memory Model,Java内存模型。本身是一种抽象的概念并不真实存在,它仅仅描述的是一组约定或规范,通过这组规范定义了程序中(尤其是多线程)各个变量的读写访问方式,并决定一个线程对共享变量的写入何时以及如何编程对另一个线程可见。关键技术点都是围绕多线程的原子性、可见性和有序性开展的。原创 2023-02-07 16:55:34 · 255 阅读 · 0 评论 -
07 - 线程的等待唤醒机制(JUC系列)
原理:permit许可证默认没有不能放行,所以一开始调用park()方法当前线程就会阻塞,直到别的线程给当前线程发放permit,park()方法才会被唤醒。简单用一句话概括就是:LockSupport中park()和unpark()方法的作用分别是阻塞线程和解除阻塞线程。使用Object类中的wait()方法让线程等待,使用Object中的notify()方法唤醒线程。使用JUC包中的Condition的await()方法让线程等待,使用signal()方法唤醒线程。关于wait()和notify()原创 2023-02-05 17:23:29 · 322 阅读 · 0 评论 -
06 - 线程的中断(JUC系列)
一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,自己来决定自己的命运。所以Thread.stop(),Thread.supend(),Thread.resume()这些方法都已经被废弃了。 正确中断线程的三种方法应该是...原创 2023-02-05 18:05:41 · 267 阅读 · 0 评论