摘要: Exception in thread "main" java.util.ConcurrentModificationException 并发修改异常引发的思考! ①list遍历删除元素时会报错,比如下面删除字符串"aa",也有遍历不报错的例子,看下面的例子 public class TestMai 阅读全文
posted @ 2017-11-07 15:36 李勇888 阅读(4553) 评论(3) 推荐(1) 编辑
摘要: 什么是JVM jvm是java虚拟机 运行在用户态、通过应用程序实现java代码跨平台、与平台无关、实际上是"一次编译,到处执行" 从微观来说编译出来的是字节码!去到哪个平台都能用,只要有那个平台的JDK就可以运行!字码好比是一个人,平台好比为国家,JDK好比这个国家的语言!只要这个人(字节码)有了 阅读全文
posted @ 2023-04-08 14:29 李勇888 阅读(41) 评论(0) 推荐(0) 编辑
摘要: Java.lang.StackOverFlowError 虚拟机栈溢出 java.lang.OutOfMemoryError: java heap space 堆区 内存溢出 java.lang.OutOfMemoryError: GC overhead limit exceeded 大量资源都用于 阅读全文
posted @ 2023-04-08 14:29 李勇888 阅读(19) 评论(0) 推荐(0) 编辑
摘要: synchronized 由对象头中的 对象标志 根据锁标志位的不同而被复用 以及锁升级策略 能用无锁 就不要用锁,能锁代码块 就不锁整个方法, 能用对象锁 就不用类锁. 尽可能让锁的粒度更小,以提高并发效率 每个对象\类 都是一把锁, 底层是Monitor锁 本质是依赖于操作系统的Mutex Lo 阅读全文
posted @ 2023-04-08 14:24 李勇888 阅读(40) 评论(0) 推荐(0) 编辑
摘要: volatile是java虚拟机提供的轻量级的同步机制 内存可见性 (保证可见性) 不保证原子性 禁止指令重排 (保证有序性) 可见性 volatile修饰的共享变量有如下特点 线程中读取这个变量时,每次都会读取主内存中最新的值,然后将其复制到工作内存 线程中修改了工作内存中变量的副本,修改之后会立 阅读全文
posted @ 2023-04-08 14:24 李勇888 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 原子类介绍 java.util.concurrent.atomic java并发包下的类,用于多线程情况下保证线程安全的 API 基本类型原子类 AtomicInteger 数组类型原子类 AtomicIntegerArray 引用类型原子类 AtomicReference 对象的属性修改原子类 A 阅读全文
posted @ 2023-04-08 14:24 李勇888 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 概念 compareAndSwap翻译过来就是 比较并交换 cas底层 调用的是unSafe,unSafed对底层的修改调用的native方法(CPU并发原语),天然原子性 代码说话 创建一个AtomicInteger类,初始化值5,此时线程A去修改,把5读到工作内存,修改成2000,在写回主内存时 阅读全文
posted @ 2023-04-08 14:16 李勇888 阅读(80) 评论(1) 推荐(1) 编辑
摘要: AQS是什么 字面意思, 抽象的队列同步器 是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的CLH (FIFO)队列的变种来完成资源获取线程的排队工作,将每条将要去抢占资源的线程封装成一个Node节点来实现锁的分配,有一个int类变量表示持有锁的状态(private 阅读全文
posted @ 2023-04-08 14:15 李勇888 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 自定义线程池 ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 200, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(5)); 第一个参数:核心线程池大小,默认创 阅读全文
posted @ 2023-04-08 14:14 李勇888 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 什么是ThreadLocal ThreadLocal提供了线程局部变量. 这些变量和正常的变量不同,因为每一个线程在访问ThreadLocal实例的时候 都有自己独立的 变量副本. ThreadLocal实例通常是类的私有静态字段,使用它的目的是希望将状态(用户ID、事务ID) 与线程关联起来 通俗 阅读全文
posted @ 2023-04-08 14:11 李勇888 阅读(20) 评论(1) 推荐(1) 编辑
摘要: 引用分类 强引用 强引用是我们常见的普通对象引用,只有还有强引用指向一个对象,就表明这个对象还“存活”,垃圾收集器不会碰这个对象 当一个对象被强引用对象引用时,它就处于 可达状态,它是不能被垃圾回收的,即使出现了OOM也不会对该对象回收 软引用 软引用是相对于强引用弱化了一些的引用 当系统内存充足时 阅读全文
posted @ 2023-04-08 14:09 李勇888 阅读(16) 评论(0) 推荐(0) 编辑