Java面试题
赫点茶
主不在乎
展开
-
使用cls命令清除Idea中的Terminal控制台
cls命令清除Idea中的Terminal控制台以及清除cmd命令窗口原创 2021-05-27 13:43:58 · 1683 阅读 · 0 评论 -
那些对象可以当做GC Roots对象呢?(试讲)
那些对象可以当做GC Roots对象呢?(试讲)1、虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中的引用对象2、方法区中的类静态属性引用的对象3、方法区中常量引用的对象4、本地方法栈中的JNI(Native方法)的引用对象1、方法区中的类静态属性引用的对象private static GCRootDemo2 t2;2、方法区中的常量引用,GC Roots 也会以这个为起点,进行遍历private static final GCRootDemo3 t3 = new GCRootDemo3原创 2021-05-27 12:16:40 · 288 阅读 · 0 评论 -
死锁的产生和定位分析:jps和jstack找到死锁查看
死锁的产生和定位分析Linux ps -ef|grep XXXX ls -lWindows 下的java运行程序 也有类似的ps的查看进程的命令,但是目前我们需要查看的只是java jps = java ps jps -l死锁的定位分析方法:jps命令定位进程号jstack找到死锁查看本地jdk1.8 binm目录下的两组参数命令死锁:死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一.种 互相等待的现象,若无外力干涉那它们都将无法推进下去pa原创 2021-05-27 10:17:36 · 377 阅读 · 0 评论 -
获取CPU核数
获取CPU核数System.out.println(Runtime.getRuntime().availableProcessors()); 获取CPU核数代码原创 2021-05-26 20:27:34 · 158 阅读 · 0 评论 -
阻塞队列SynchronousQueue代码演示
SynchronousQueue:不存储元素的阻塞队列,也即单个元素的队列生产一个,消费一个,不存储元素,不消费不生产package com.youliao.thread;import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;import java.util.concurrent.TimeUnit;/** * @Author Dali * @Date 2021/5/24原创 2021-05-24 18:25:59 · 82 阅读 · 0 评论 -
SpinLockDemo代码案例分析
原来提到的比较并交换(CAS),底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁自旋锁的优缺点:好处:减少线程上下文切换的消耗, 循环比较获取直到成功为止,没有类似于wait的阻塞缺点:循环会消耗CPU, 当不断自旋的线程越来越多的时候,会因为执行while循环不断的消耗CPU资源package com.youliao.thread;import com.youliao.java.原创 2021-05-23 15:18:57 · 124 阅读 · 0 评论 -
验证ReentrantLock/Synchronized 为什么是一个典型的可重入锁( 可重入锁就是递归锁)
可重入锁就是递归锁指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块ReentrantLock【美 /rɪˈentrənt lɑːk/】 / Synchronized 就是一个典型的可重入锁package com.youliao.thread;import java.util.concurrent.TimeUnit;import java.util.con原创 2021-05-23 12:59:35 · 86 阅读 · 0 评论 -
HashSet线程不安全,1、 使用JUC中的CopyOnWriteArraySet底层还是使用CopyOnWriteArrayList进行实例化 2、使用工具类中的Collections.synch
private static void setNotSafe() { // Set<String> set = new HashSet<>(); //原始测试// Set<String> set = Collections.synchronizedSet(new HashSet<>()); //解决java.util.ConcurrentModificationException 方法1 ...原创 2021-05-22 18:13:36 · 180 阅读 · 4 评论 -
HashMap线程不安全:解决办法:1、使用Collections.synchronizedMap(new HashMap<>());2、使用 ConcurrentHashMap
HashMap线程不安全:解决办法:1、使用Collections.synchronizedMap(new HashMap<>());2、使用 ConcurrentHashMap public static void main(String[] args) { //listNotSafe(); //setNotSafe();// Map<String, String> map = new HashMap<>();//原原创 2021-05-22 18:10:52 · 320 阅读 · 0 评论 -
并发修改异常三个解决方案比较对比:1、Vector;2、Collections.synchronized();3、采用JUC里面的方法
package com.youliao.thread;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;/** * @Author Dali * @Date 2021/5/22 12:43 * @Version 1.0 * @Description : 集合类不安全的问题 * 1、ArrayList */public class ContainerNotSafeDemo { public s原创 2021-05-22 17:20:30 · 112 阅读 · 2 评论 -
Arrays和ArrayList不同写法比较
public static void main(String[] args) { //new ArrayList<Integer>().add(1); //写法1: List<String> list1 = Arrays.asList("a","b","c"); list1.forEach(System.out::println); //写法2: List<S..原创 2021-05-22 13:02:31 · 90 阅读 · 0 评论 -
ABA问题的产生/解决——AtomicStampedReference(原子标记参考)
ABA问题的解决package com.youliao.thread;import java.sql.Time;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent.atomic.AtomicStampedReference;/** * @Author Dali * @Date 2021/5/22 11:54原创 2021-05-22 12:36:30 · 134 阅读 · 0 评论 -
atomicReference原子引用
package com.youliao.thread;import jdk.nashorn.internal.objects.annotations.Getter;import lombok.AllArgsConstructor;import lombok.ToString;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;/** * @A原创 2021-05-22 11:48:17 · 92 阅读 · 0 评论 -
CAS比较并交换,CASDemo代码
package jvm;import java.util.concurrent.atomic.AtomicInteger;/** * @Author Dali * @Date 2021/5/20 17:56 * @Version 1.0 * @Description: * 1.比较并交换 CASDemo代码 * 2.CAS底层原理?如果知道,谈谈你对UnSafe的理解 * 3.CAS缺点 * 3 */public class CASDemo { public stat原创 2021-05-20 18:17:33 · 64 阅读 · 0 评论 -
DCL (双端检锁)机制不一-定线程安全,原因是有指令重排序的存在,加入volatile可 以禁止指令重排
单例模式DCL代码:package com.youliao.java;import com.sun.org.apache.bcel.internal.generic.SIPUSH;import sun.reflect.generics.tree.ShortSignature;import java.lang.management.ThreadInfo;/** * @Author Dali * @Date 2021/5/14 21:14 * @Version 1.0 * @Descri原创 2021-05-20 17:42:02 · 325 阅读 · 0 评论 -
河南中科江南面试题!!!
原创 2021-05-16 23:13:48 · 242 阅读 · 0 评论