【多线程7-1】JAVA容器的发展历程

2020-06-05

容器在物理层面分为两类,内存连续和内存不连续的容器内存连续的主要有数组、ArrayList、Set内存不连续的主要有HashMap,LinkedListJAVA最原始的数组有两个:Hashtable和

0 条评论
400 热度

【多线程6】ReentrantLock源码分析

2020-06-05

ReentrantLock可以有公平锁和非公平锁的不同实现,只要在构造它的时候传入不同的布尔值,继续跟进下源码我们就能发现,关键在于实例化内部变量sync的方式不同,如下所示publicReentra

0 条评论
372 热度

【多线程5】AQS源码解析

2020-06-05

一、AQS是构建同步组件的基础AbstractQueuedSynchronizer,简称AQS,为构建不同的同步组件(重入锁,读写锁,CountDownLatch等)提供了可扩展的基础框架,如下图所示

0 条评论
570 热度

【多线程4】ThreadLocal理解

2020-06-04

一、ThreadLocal的使用正常的情况下,person对象是这两个线程共有的,即使用同一个对象,因此当一个线程修改person的name时,另一个线程的name也会改变。publicclassTh

0 条评论
439 热度

VarHandle的理解与用法

2020-06-04

变量句柄(VarHandle)是对于一个变量的强类型引用,或者是一组参数化定义的变量族,包括了静态字段、非静态字段、数组元素等,VarHandle支持不同访问模型下对于变量的访问,包括简单的read/

0 条评论
536 热度

【多线程3】---两个面试题

2020-06-03

第一个:实现一个容器,提供两个方法,add,size。写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束第二个:写一个固定容量同步容器,拥有put

0 条评论
382 热度

【多线程2】---JUC同步锁

2020-06-02

ReentrantLockReentrantLock与sync的区别ReentrantLock的底层是CAS,sync是锁升级的trylocklockInterruptibly公平和非公平Reentr

0 条评论
403 热度

java内存模型JMM理解整理

2020-06-01

什么是JMM  JMM即为JAVA内存模型(javamemorymodel)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程

0 条评论
371 热度

synchronized深入理解

2020-05-12

1.用户态和内核态内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被

0 条评论
421 热度

volatile深入理解

2020-05-09

volatile关键字,使一个变量在多个线程间可见AB线程都用到一个变量,java默认是A线程中保留一份copy,这样如果B线程修改了该变量,则A线程未必知道使用volatile关键字,会让所有线程都

0 条评论
397 热度