随笔分类 -  JAVA - JDK

摘要:不可见性问题示例1 public class Test { // 加 volatile 就能解决 public static Integer flag = 1; public static void main(String[] args) { // 线程 A 死循环,当 a == 1 时不会停止,当 阅读全文
posted @ 2024-08-30 13:40 CyrusHuang 阅读(19) 评论(0) 推荐(0) 编辑
摘要:用法 同步方法 public synchronized void instanceMethod() { // 锁是当前实例对象(调用哪个对象的这个方法,哪个对象就是锁对象) } public static synchronized void staticMethod() { // 锁是当前类的 Cl 阅读全文
posted @ 2024-08-30 13:39 CyrusHuang 阅读(3) 评论(0) 推荐(0) 编辑
摘要:乐观锁、悲观锁 这不是一种具体的锁,是一个概念,可以认为所有的锁都是悲观或乐观的,java 中绝大部分锁都是悲观锁(synchronized、ReentrantLock等);也有乐观锁(原子类的递增、读写锁的读锁),java 的乐观锁都是 CAS 实现的 悲观锁 每次线程对资源做任何操作都要先获取锁 阅读全文
posted @ 2024-08-26 12:28 CyrusHuang 阅读(3) 评论(0) 推荐(0) 编辑
摘要:线程不安全示例 public class UnsafeTicketSeller { // 总票数 private int tickets = 10; // 售票方法 public void sellTicket() { // 检查是否还有票 if (tickets > 0) { // 模拟处理时间 阅读全文
posted @ 2024-08-02 13:55 CyrusHuang 阅读(9) 评论(0) 推荐(0) 编辑
摘要:生命周期 创建线程 实现 Runnable 接口 class MyRunnable implements Runnable { public void run() { // ... } } public static void main(String[] args) { MyRunnable ins 阅读全文
posted @ 2024-08-01 13:35 CyrusHuang 阅读(3) 评论(0) 推荐(0) 编辑
摘要:Vertor 如果初始化不指定长度,长度默认为 10 初始化后,数组不为空,就设置好了长度和扩容增量,ArrayList 是第一次 add ,HashMap 第一次 put 才设置长度 如果创建实例时没有指定扩容增量,默认每次扩容后长度变为原来的 2 倍;如果指定了增量,每次扩容后,长度变为原来的长 阅读全文
posted @ 2023-05-24 17:07 CyrusHuang 阅读(193) 评论(0) 推荐(0) 编辑
摘要:成员变量和构造方法 transient int size = 0; // 元素个数 transient Node<E> first; // 第一个节点 transient Node<E> last; // 最后一个节点 // 无参构造 public LinkedList() { } // 有参构造, 阅读全文
posted @ 2023-05-24 17:06 CyrusHuang 阅读(15) 评论(0) 推荐(0) 编辑
摘要:成员变量 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // 数组默认长度 static final int MAXIMUM_CAPACITY = 1 << 30; // 数组长度最大值 static final float DEFAULT_ 阅读全文
posted @ 2023-05-24 17:06 CyrusHuang 阅读(27) 评论(0) 推荐(0) 编辑
摘要:成员变量和构造方法 private static final Object[] EMPTY_ELEMENTDATA = {}; private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 定义了两个空数组成员变量,这两个 阅读全文
posted @ 2023-05-24 17:04 CyrusHuang 阅读(18) 评论(0) 推荐(0) 编辑
摘要:Collection 继承关系 Map 继承关系 数组 链表 红黑树 二叉树:和链表类似,链表一个节点只有一个子节点(下一个节点),而二叉树就是可以有两个子节点,不能超过2,超过就是多叉树了 平衡二叉树:任意节点的左子树和右子树的高度之差的绝对值不超过 1 二叉搜索树:任意节点,左子树中所有节点的值 阅读全文
posted @ 2023-05-24 17:03 CyrusHuang 阅读(14) 评论(0) 推荐(0) 编辑
摘要:Java I/O(输入/输出)是Java编程中用于处理输入和输出的核心API。它提供了丰富的类和方法来读取和写入数据,包括文件、网络流、内存流等。Java I/O主要分为两大类:字节流和字符流。下面我们将详细讲解Java I/O的主要知识点和使用方法。 1. 字节流(Byte Streams) 字节 阅读全文
posted @ 2023-03-04 12:57 CyrusHuang 阅读(19) 评论(0) 推荐(0) 编辑
摘要:内置注解 注解 作用 描述 @Override 用于标记方法覆盖父类的方法 @Deprecated 标记已过时的方法或类,建议不再使用 @SafeVarargs 用于抑制参数安全性警告 注解只能用于静态方法或 final 实例方法 @FunctionalInterface 标记接口为函数式接口 只有 阅读全文
posted @ 2023-03-01 21:19 CyrusHuang 阅读(26) 评论(0) 推荐(0) 编辑
摘要:4个对象 Class:class 文件 获取 Class 方法类.class、对象.getClass()、Class.forName("全限定类名") Field:成员变量 Method:成员方法 Constructor:构造方法 Class 常用 API 作用 方法 说明 获取类全限定名 claz 阅读全文
posted @ 2023-03-01 18:09 CyrusHuang 阅读(16) 评论(0) 推荐(0) 编辑
摘要:泛型类 // 简单泛型 class Point<T>{ // 此处可以随便写标识符号,T是type的简称 private T var ; public T getVar(){ return var ; } public void setVar(T var){ this.var = var ; } } 阅读全文
posted @ 2023-03-01 17:15 CyrusHuang 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Date 方法 描述 解释 Date date1 = new Date() 当前时间 date1.getTime() 获取时间对应的毫秒数 返回 long setTime(milliseconds) 设置日期和时间 参数是一个毫秒数 date1.compareTo(date2) 比较先后 负数:da 阅读全文
posted @ 2023-02-10 22:10 CyrusHuang 阅读(51) 评论(0) 推荐(0) 编辑
摘要:static 修饰成员变量,静态变量不属于对象,属于类变量,凡是这个类创建出来的对象,都可以共享这个变量 修饰方法,也是属于类的方法 final final 修饰的类不能被继承 final 修饰的对象,地址不能改变,对象属性值可以 final 修饰的方法不能被重写 final 修饰局部变量,不能二次 阅读全文
posted @ 2023-02-10 18:30 CyrusHuang 阅读(34) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示