并发编程:ReentrantLock的加锁和解锁过程
并发编程:ReentrantLock的加锁和解锁过程 ReentrantLock 和Aqs的关系 加锁流程 解锁流程 1. 和Aqs的关系 2. 加锁流程 第一个线程t1,第一次加锁,没有加锁之前 aqs(NonfairSync)的状态 t1加锁成功后 第二个线程t2尝试加锁,如果加锁成功 t2加锁失败,会创建队列 private N...
并发编程:ReentrantLock的加锁和解锁过程 ReentrantLock 和Aqs的关系 加锁流程 解锁流程 1. 和Aqs的关系 2. 加锁流程 第一个线程t1,第一次加锁,没有加锁之前 aqs(NonfairSync)的状态 t1加锁成功后 第二个线程t2尝试加锁,如果加锁成功 t2加锁失败,会创建队列 private N...
var ”关键字” 实际上并不是关键字 java7中的类型推断: List list = new ArrayList<>(); 通过从左边的类型推断等式右侧的类型; java11中的局部类型推断: var a = “abc”; String a = “abc”; 上面两行代码实际上并没有本质的差别,只是从形式上简化了编码;当我们创建的对象名很复杂时,可以省去重复写对...
/** * 字符串转换成十六进制字符串 * @param str 待转换的ASCII字符串 * @return String 每个Byte之间空格分隔,如: [61 6C 6B] */ private String strToHexStr(String str) { char[] chars = “0123456789ABCDEF”.toCharArray(); St...
反射基础补充 java提供了程序运行时探索未加载类的能力和方法 —-> 反射机制 一个类在什么时候会加载? 类加载: ```plain text 1.访问类的静态方法或属性 2.首次创建类的实例(只有在首次创建实例的时候才会加载,之后再创建实例不会加载) 3.Class.forName(“类的全限定类名”); Class.forName() 1.获取目标类中定义的方法 ...
When you have to loop through a collection and make a string of each data separated by a delimiter, you always end up with an extra delimiter at the end, e.g. for(String serverId : serverIds) { ...
元注解 元注解概念 @Target @Retention @Inherited @Documented @Repeatable (java1.8 新增) @Repeatable 运用举例 元注解 元注解概念 在讲解元注解概念之前,我们先建立元数据的概念。 元数据在英语中对应单...
wait / notify机制 - 思维导图
ThreadLocal的底层原理 ThreadLocal是Java中所提供的线程本地存储机制,可以利用该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意方法中获取缓存的数据 ThreadLocal底层通过ThreadLocalMap来实现的,每个Thread对象(并不是ThreadLocal对象)中都存在一个ThreadLocalMap,Map的key为ThreadLoc...
threadlocal ThreadLocal 就是一个map key -> Thread.getCurrentThread() value -> 线程需要保存的变量 内存问题: 在并发量高的时候,可能有内存溢出 使用ThreadLocalde shihou ,一定注意回收资源问题,每一个线程结束之前,将当前线程保存的线程变量一定要删除。 ThreadLocal。...
ssm框架中注解的含义小结 组件扫描 什么是组件扫描?? 指定一个包路径,Spring会自动扫描该包及其子包所有组件类,当发现组件类定义前有特定的注解标记时,就将该组件纳入到Spring容器。等价于原有XML配置中的定义功能。 组件扫描可以替代大量XML配置的定义。 在spring中,开启注解扫描后,替代xml配置bean, <context:component-scan ...