上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 25 下一页
摘要: 1、等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作。 使用join也可以完成这个操作,代码示例如下: package com.example2.demo2.controller; import lombok.extern.slf4j. 阅读全文
posted @ 2020-06-22 11:01 李聪龙 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 一、ConcurrentHashMap的实现原理与使用 1、为什么要使用ConsurrentHashMap 两个原因,hashMap线程不安全(多线程并发put时,可能造成Entry链表变成环形数据结构,Entry的next节点永不为空,就会产生死循环获取Entry),hashTable效率低(Ha 阅读全文
posted @ 2020-06-18 16:51 李聪龙 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 1、Lock接口 Lock与Synchronized实现效果一致,通过获得锁、释放锁等操作来控制多个线程访问共享资源,但是Synchronized将获取锁固话,必须先获得锁,再执行,因此两者对比来说,Synchronized更方便,不需要关注加锁解锁操作;而Lock更灵活,提供了可操作、可中断等特性 阅读全文
posted @ 2020-06-15 19:07 李聪龙 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 一、线程简介 1、线程状态 线程在其生命周期内的所有状态如下表所示: 线程状态 状态说明 NEW 初始状态,线程被构建,但还没有调用start()方法 RUNABLE 运行状态,JAVA线程将操作系统中的就绪和运行两种状态笼统的称作“运行中”,即调用run()方法前后,统一都叫运行中 BLOCKED 阅读全文
posted @ 2020-06-10 17:12 李聪龙 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 一、什么是JMM (一)JMM定义 JMM 规范对应的是“[JSR-133. JavaMemory Model and ThreadSpecification]”,《Java 语言规范》的 [$17.4. Memory Model章节] JMM 规范明确定义了不同的线程之间,通过哪些方式,在什么时候 阅读全文
posted @ 2020-06-10 10:10 李聪龙 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 一、并发编程的挑战 并发编程的挑战 多线程程序不一定运行的比单线程快: (1)上下文切换 任务从保存到再加载的过程就是一次上下文切换; 减少上下文切换的方法:无锁并发编程、CAS算法、使用最少线程和使用协程。 a、无锁并发编程:多线程会竞争锁会引起上下文切换,因此使用无锁并发编程,可以避免上下文切换 阅读全文
posted @ 2020-06-09 16:03 李聪龙 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 一、反射的概述 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Clas 阅读全文
posted @ 2020-06-03 11:26 李聪龙 阅读(207) 评论(0) 推荐(0) 编辑
摘要: JDK8中,提供了并行流和串行流,使用parallel()和sequential()来处理,parallel()为并行流sequential()为串行流,两者可以相互转换,以最后一个为准 LongStream.rangeClosed(0,1000000).sequential().parallel( 阅读全文
posted @ 2020-06-02 18:46 李聪龙 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 在JDK8之前,时间有各种问题,最大的问题就是,我们使用的时间格式化类SimpleDateFormat不是线程安全的 为了更准确的说明SimpleDateFormat非线程安全,演示一个并发做时间格式化的操作 public void test() throws Exception{ //全新的时间A 阅读全文
posted @ 2020-06-02 15:12 李聪龙 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 在程序运行时,空指针异常应该是最常见的异常之一,因此JDK8提供了Optional来避免空指针异常。 首先说明JDK8新增的Optional及相关方法的使用 Optional的常用操作: Optional.of(T value) 创建一个Optional实例 Optional.empty() 创建一 阅读全文
posted @ 2020-06-01 15:11 李聪龙 阅读(253) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 25 下一页