java基础知识学习
naruto227
你的假装努力,欺骗的只有你自己
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
jar命令解压jar包及更新jar的配置文件
进入目录:/BOOT-INF/classes。修改配置文件yml,然后将yml压缩进jar。原创 2025-02-17 10:19:07 · 499 阅读 · 0 评论 -
Map中的computeIfAbsent方法
文章目录1、概述2、代码示例2.1 示例12.2 示例22.2 示例31、概述在JAVA8的Map接口中,增加了一个computeIfAbsent,方法签名如下:default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)Function是一个函数式接口R apply(T t);此方法首先判断缓存map中是否存在指定的key值,如果不存在,会自动调用mappingFunctio原创 2021-02-01 14:01:37 · 12198 阅读 · 0 评论 -
Java多线程详解(十二)------ SimpleDateFormat非线程安全
文章目录1. 异常测试2. 非线程安全原因3. 解决方法3.1 将SimpleDateFormat定义成局部变量3.2 使用ThreadLocal3.3 使用DateTimeFormatter代替SimpleDateFormat1. 异常测试public class SimpleDateFormatTest { private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");原创 2020-12-21 19:57:44 · 208 阅读 · 0 评论 -
Java多线程详解(十一)------ 单例模式与多线程
文章目录1. 立即加载/“饿汉模式”2. 延迟加载/“懒汉模式”2.1 延迟加载/“懒汉模式”的解决方案3. 使用静态内置类实现单例4. 序列化和反序列化的单例模式实现5. 使用enum枚举数据类型实现单例模式1. 立即加载/“饿汉模式”立即加载就是使用类的时候已经将对象创建完毕。public class MyObject { // 立即加载方式==饿汉模式 private static MyObject myObject = new MyObject(); private原创 2020-12-21 19:56:40 · 184 阅读 · 0 评论 -
Java多线程详解(十)------ 定时器
文章目录1 定时器Timer的使用1.1 schedule(TimerTask task, Date time)1.2 schedule(TimerTask task, Date firstTime, long period)1.3 schedule(TimerTask task, long delay)1.4 schedule(TimerTask task, long delay, long period)1.5 具有追赶特性的scheduleAtFixedRate1 定时器Timer的使用Timer原创 2020-12-19 16:16:58 · 311 阅读 · 1 评论 -
Java多线程详解(九)------ Lock的使用
文章目录1 使用ReentrantLock类1.1 使用Condition实现等待/通知1.2 实现生产者/消费者1.3 公平锁与非公平锁1.4 部分API介绍1.5 交替打印ABC2 使用ReentrantReadWriteLock类ReentrantLock类的使用ReentrantReadWriteLock类的使用1 使用ReentrantLock类ReentrantLock类也能达到同样的效果,实现线程之间同步互斥,并且在扩展功能上也更加强大,比如具有嗅探锁定、多路分支通知等,使用上也比原创 2020-12-18 17:32:08 · 216 阅读 · 1 评论 -
Java多线程详解(八)------ ThreadLocal和InheritableThreadLocal
文章目录1 类ThreadLocal的使用1.1 验证线程变量的隔离性1.2 解决get()返回null问题1.3 实现机制2 类InheritableThreadLocal的使用1 类ThreadLocal的使用变量值的共享可以使用public static变量的形式,所有的线程都是用同一个public static变量。而ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放的盒子,盒子中可以存储每个线程的私有数据。1.1 验证线程变量的隔离性pu原创 2020-12-16 15:59:53 · 215 阅读 · 0 评论 -
Java多线程详解(七)------ 方法join的使用
文章目录1 join使用方式1.1 join与异常1.2 方法join(long)与sleep(long)的区别1 join使用方式若主线程想等待子线程执行完成之后再结束,比如子线程处理一个数据,主线程要取得这个数据中的值,就要用到join,它的作用是等待线程对象销毁。public class MyThread extends Thread { @Override public void run() { try { int secondVal =原创 2020-12-15 20:12:00 · 208 阅读 · 0 评论 -
Java多线程详解(六)------ 线程间通信(等待通知及管道流)
文章目录1 等待/通知机制1.1 不使用wait/notify机制实现线程间通信1.2 等待wait/通知notify机制的实现1.3 方法wait()锁释放与notify()锁不释放1.4 方法wait(long)的使用2 生产者/消费者模式实现3 通过管道进行线程间通信3.1 字节流3.2 字符流1 等待/通知机制A的执行需要依赖于B的一些条件,A进入等待状态wait,B持续执行,当达到A期望的条件时,通知A继续执行任务notify。这就是线程间的通信。1.1 不使用wait/notify机制原创 2020-12-07 16:02:08 · 457 阅读 · 0 评论 -
泛型
泛型文章目录泛型泛型方法泛型类类型通配符泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的)。public static <T> void sort(T[] a, Comparator<? super T> c) {}每一个类型参数...原创 2020-03-14 12:26:45 · 155 阅读 · 0 评论
分享