![](https://img-blog.csdnimg.cn/2021092401070377.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多线程
文章平均质量分 96
多线程
hancoder
谢谢支持
展开
-
【AQS源码】condition、CountDownLatch、CyclicBarrier、中断、共享等
导言:大家应该都或多或少学习过Reentranlock的源码,说实话AQS相关的阻塞队列、调价队列、排它锁、共享锁的阅读还是需要花时间细心看的,本文希望能梳理思路,方便你真正读代码时不至于绕迷糊。本文基于我的思维导图来讲解:https://www.processon.com/view/link/5ede205d5653bb6963dc6d56一、从Reentranlock说起0、名词解释代码中有些函数的命名规则lock()代表是最高层的加锁API,他调用acquireacquire是第二高的原创 2021-10-25 16:16:41 · 2869 阅读 · 7 评论 -
【java多线程】对象头、synchronized锁的升级、monitor
很久之前写的一篇文章,简单整理了下发表出来。整理的不够好,但是内容很充分很多内容是长期积累的舍不得删了,读者尽量把前面的看懂吧。源码部分可忽略一、对象头在 JVM 中,对象在内存中分为三块区域:对象头:标记字段和类型指针。一会介绍实例数据:这部分主要是存放类的数据信息,父类的信息。对齐填充:由于虚拟机要求对象起始地址必须是8字节的整数倍,填充数据不是必须存在的,仅仅是为了字节对齐。HotSpot虚拟机中,设计了一个OOP&Klass Model。它用来标识一个对象的特征,注意并不包原创 2021-09-22 20:09:18 · 1873 阅读 · 0 评论 -
【多线程】线程中断
文章目录问题引入:sleep为什么要catch异常?中断状态部分源码线程池与中断问题引入:sleep为什么要catch异常?我们学习多线程生产者消费者等问题的时候,通常需要使用Thread.sleep()时,IDEA却报错让我们catch异常,新手一般比较迷惑,哪来的异常?直接说结论然后我们一步步分析:Thread.sleep()抛出的异常叫中断异常InterruptedException同理抛这个异常的方法还有:java.lang.Object 类的 wait()。他的特点是让出锁+cpu,等原创 2020-09-21 22:39:57 · 427 阅读 · 0 评论 -
【java多线程】5、ThreadLocal
ThreadLocal早在JDK1.2的版本中就提供java.lang.Threadlocal, Threadlocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。Threadlocal,顾名思义,它不是一个线程,而是线程的一个本地化对象。当工作于多线程中的对象使用 Threadlocal维护变量时, Threadlocal为每个使用该变量的线程分配个独立的变量副本。所以每一个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。从线程的角度原创 2020-08-07 01:16:56 · 921 阅读 · 3 评论 -
【java多线程】4、AtomicInteger+AQS+ReentrantLock源码
Atomic高并发的情况下,i++无法保证原子性,往往会出现问题,所以引入AtomicInteger类。线程不安全示例我们分别累加普通变量、volatile变量、AtomicInteger变量public class TestAtomicInteger { private static final int THREADS_COUNT = 2; public static int count = 0; public static volatile int countVolat原创 2020-08-07 00:23:08 · 1689 阅读 · 0 评论 -
【java多线程】3、Unsafe类和CAS
问题引入:常见的多个线程对一个成员变量(不是局部变量)i进行i++操作。public Person{ private int i =0; public static void main(String[] args){ final Person person = new Person(); // 线程1 new Thread(new Runnable(){ @Override public原创 2020-08-05 00:42:41 · 423 阅读 · 0 评论 -
【java多线程】2、JUC
前瞻:java多线程、线程池讲解:https://blog.csdn.net/hancoder/article/details/1057402881、什么是JUC:java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks2、atomic、volatilehttps://www.cnblogs....原创 2020-04-24 21:35:59 · 1165 阅读 · 0 评论 -
【java多线程】1 Thread、线程池、同步总结
Thread类线程创建与启动创建:写到Thread对象.run()方法里。启动:调用Thread对象.start()Thread构造器构造方法Thread():创建新的Thread对象Thread(String threadname):创建线程并指定线程实例名Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法Thre...原创 2020-04-24 21:33:45 · 1046 阅读 · 0 评论