
-
ReentrantLock 源码分析
我们知道 ReentrantLock 分为公平锁和非公平锁,源码上是怎么实现公平和非公平?我们在使用 ReentrantLock 一般的使用方式:package threads.demo01; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import&nb
Mar 1, 2023 阅读(247)标签: Java -
Idea 多线程断点调试
问题引出在我们多线程环境下打断点调试时,发现很奇怪明明打了断点,可实际情况却是只有一个线程执行的时候在断点处被暂停,其他线程都跑完拉。正确的姿势断点打的没问题,就是断点处需要设置 Suspend 对所有线程(即,Suspend : 选择 Thread)。
Feb 28, 2023 阅读(216)标签: 调试技巧 -
List 使用 java.lang.UnsupportedOperationException 异常
最近使用 List 时抛 UnsupportedOperationException 异常,大致的代码如下:public void test(){ List<String> list = Arrays.asList("JAVA", "MySQL&q
Apr 25, 2022 阅读(662)标签: Java -
Spring 5 源码编译 fatal: Not a git repository (or any of the parent directories): .git
前言为了学习 Spring 源码,想在源码上做注释,因此将源码 clone 下来本地编译。最终编译环境OK拉,就是有报红的错误信息,受不了尝试解决掉。本地环境IDEA 2018.2gradle-5.6spring-framework-5.2.2.RELEASEjdk-11.0.13错误信息如下:fatal: Not a git repository&
Jan 10, 2022 阅读(1053)标签: Spring -
Java二分查找算法
简介 二分查找又叫折半查找,是一种简单又快速的查找算法;它对要查找的序列有两个要求,一是该序列必须是有序的(即该序列中的所有元素都是按照大小关系排好序的,升序和降序都可以),二是该序列必须是顺序存储的。 二分查找示例等值二分查找@Test public void testEqBinarySearch() { int[]&
Dec 27, 2021 阅读(715) -
JUnit 单元测试框架简单示例和最佳实践
什么是 JUnit ?JUnit 是Java 单元测试框架最常用的框架之一。JUnit是一个用于编写和运行测试的框架,简单易学。每个测试都是一个方法,包含特定场景下将执行的部分代码。比较预期输出和实际输出,以实现代码验证。JUnit 简单实例测试类通常包含三个阶段:1. 准备;2. 测试;3. 清理下面列举了一个单元测试的小案例:import org.junit.*; impo
Dec 26, 2021 阅读(750) -
Java 线程之间的通信 —— 等待和通知,生产者消费者示例
wait(), notify() 与 notifyAll() 是 Object 定义的方法, 可以通过这3个方法控制线程是否对象的锁定,或者通知线程参与锁定竞争。线程进入 synchronized 范围前,要先取得指定对象的锁定。执行 synchronized 范围的程序代码期间,若调用锁定对象的 wait() 方法,线程会释对象放锁,并进入对象等待集合而处于阻断状态,其他线程可以竞争对象锁定,取
Dec 3, 2021 阅读(774)标签: Java -
UML类图几种关系的总结
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)1.泛化(Generalization)【泛化关系】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为 例如:老虎是动物的一种.【箭头指向】:带三角
Oct 20, 2021 阅读(635) -
Java Swing 绝对布局
package swing.chapter02; import swing.util.SwingConsle; import javax.swing.*; import java.awt.*; /** * 绝对定位 */ public class NullLayout extends&nb
Sep 6, 2021 阅读(748)标签: Java -
Java Swing 组件更新线程冲突问题
先看一下以下更新组件的代码:import javax.swing.*; import java.util.concurrent.TimeUnit; public class HelloLabel { public static void main(String[]&n
Sep 6, 2021 阅读(733)标签: Java