Java源码之 java.util.concurrent 学习笔记01
准备花点时间看看 java.util.concurrent这个包的源代码,来提高自己对Java的认识,努力~~~
参阅了@梧留柒的博客!边看源码,边通过前辈的博客学习!
包下的代码结构分类:
1.java.util.concurrent.atomic,正如它的英文意思一样,是一个线程安全、原子操作相关的包
另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,即当某个线程进入方法,执行其中的指令时,不会被其他线程打断,而别的线程就像自旋锁一样,一直等到该方法执行完成,才由JVM从等待队列中选择一个另一个线程进入,这只是一种逻辑上的理解。实际上是借助硬件的相关指令来实现的,不会阻塞线程(或者说只是在硬件级别上阻塞了)。可以对基本数据、数组中的基本数据、对类中的基本数据进行操作。原子变量类相当于一种泛化的volatile变量,能够支持原子的和有条件的读-改-写操作。—— 引自@chenzehe的博客
另外附加@终点 关于java.util.concurrent.atomic的文章。
2.java.util.concurrent.lock,它是一个锁相关的包
3.并发容器,一些集合相关的和队列相关的类
如:ConcurrentHashMap、ConcurrentLinkedDeque
4.执行器和线程池
如:ScheduledThreadPoolExecutor、Callable。这个我之前有简单用到过。
5.剩下暂时都归类到其它,体会了再讨论
如:CountDownLatch、Phaser、ForkJoinPool
暂时就这么分,后面一块一块的源码学习下去,记录下学习的过程和一些心得体会,和大家一起分享进步!
欢迎关注云原生玩码部落(https://www.funnycode.org.cn)