
尚硅谷面试题第三季
记录尚硅谷面试题第三季面试题
沙漠662
自学javaEE
展开
-
Volatile 的可见性和非原子性验证 volatile n++ 不保证线程安全
package com.beantechs.cpsp.online.voilation; import org.junit.Test; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; /** * @Author:刘赵强 * @Date:2021/3/15 14:42 * @Description: **/ class MyData{ volatile int.原创 2021-03-15 16:04:12 · 259 阅读 · 0 评论 -
redis分布式锁一步步到迭代到redission框架的分布式锁
package com.lzqiang.interview.redisLock; import lombok.extern.slf4j.Slf4j; import org.redisson.Redisson; import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configura.原创 2020-11-30 20:01:18 · 319 阅读 · 0 评论 -
ReentrantLock 非公平锁底层原理
package com.lzqiang.interview.juc; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; public class AQSDemo { public static void main(String[] args) { ReentrantLock lock = new ReentrantLock(true); .原创 2020-11-25 15:01:13 · 308 阅读 · 0 评论 -
AQS2
AQS使用一个volatile的int类型的成员变量来表示同步状态,通过内置的 FIFO队列来完成资源获取的排队工作将每条要去抢占资源的线程封装成 一个Node节点来实现锁的分配,通过CAS完成对State值的修改。 AQS的同步状态state成员变量 零说明没有资源占用,自由状态可以办理 大于等于1 有线程占用资源 AQS的CLH队列 Node内部结构 AQS同步队列的...翻译 2020-11-24 10:39:16 · 236 阅读 · 0 评论 -
AQS
解释:是用来构建锁或者其他同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO(先进先出)队列来完成资源获取线程的排队工作,并通过一个int类变量表示持有锁的状态 CLH是三个科学家的名字首字母 和AQS有关的类 ReentrantLock CountDownLatch ReentrantReadWriteLock Semaphore 锁和AQS的关系:锁面向锁的使用者,定义了程序员和锁交互的使用层API,隐藏了实现细节 同步器AQS是锁的实现 ...翻译 2020-11-24 10:14:02 · 198 阅读 · 0 评论 -
LockSupport
LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。 LockSupport类使用了一种名为Permit(许可)的概念来做到阻塞和唤醒线程的功能,每个线程都有一个许可(permit), permit只有两个值1和零,默认是零。 可以把许可看成是一种(0,1)信号量(Semaphore),但与Semaphore不同的是,许可的累加上限是1。 permit默认是O,所以一开始调用park()方法,当前线程就会阻塞,直到别的线程将当前线程的permit设置为1时,park方法会...翻译 2020-11-19 14:19:48 · 208 阅读 · 0 评论 -
可重入锁
可重入锁又名递归锁 是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提,锁对象得是同一个对象), 不会因为之前已经获取过还没释放而阻塞。 Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。 可重入锁种类 隐式锁(即synchronized关键字使用的锁)默认是可重入锁 package com.hhf.study.juc; /** * 可重入锁:可重复可递归调用的锁,在外层使用锁之后,在...转载 2020-11-19 14:08:41 · 146 阅读 · 0 评论 -
乐扣算法求2数之和
package com.lzqiang.interview; import java.util.HashMap; import java.util.Map; /** * @Author:刘赵强 * @Date:2020/11/16 14:15 * @Description:乐扣算法 求和 * https://leetcode-cn.com/problems/two-sum/ **/ public class CaseOne { public static int[] intSum2.转载 2020-11-18 10:44:10 · 553 阅读 · 0 评论 -
面试题1 intern
@Test public void test() { String str1 = new StringBuilder("58").append("tongcheng").toString(); System.out.println(str1); System.out.println(str1.intern()); System.out.println(str1 == str1.intern()); Syste...翻译 2020-11-16 10:58:55 · 246 阅读 · 0 评论