Java
相信光变成光GOAT
其实每一个人都能靠自己的力量变成光的
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中的自动拆装箱原理
摘要:Java中的自动装箱和拆箱机制分别通过调用valueOf()和intValue()方法实现。自动装箱将基本类型转换为包装类(如int转为Integer),自动拆箱则相反。示例代码Integer i=10和int a=i分别被反编译为Integer.valueOf(10)和i.intValue(),揭示了底层实现原理。这种机制简化了基本类型和包装类的转换过程,提高了代码可读性。原创 2025-09-17 16:39:47 · 185 阅读 · 0 评论 -
ArrayList中的源码解析
ArrayList迭代器通过双重检查防止反射攻击。Itr.next()方法先检查i是否越界(i>=size),再检查数组边界(i>=elementData.length)。这是因为即使不改变size值,通过反射修改elementData数组长度仍可能导致安全问题。示例代码演示了通过反射缩减数组后,第二个检查能及时抛出ConcurrentModificationException,确保迭代器安全性。这种防御机制有效防止了反射操作带来的数据不一致问题。原创 2025-09-08 20:08:07 · 231 阅读 · 0 评论 -
如何让Future的get方法抛出InterruptedException
本文通过实验验证了Future.get()方法抛出InterruptedException时的"当前线程"指代问题。第一个实验中断线程池线程时get()未被中断,第二个实验中断调用get()的线程时成功捕获异常。结果表明:当且仅当调用get()方法的线程被中断时,get()方法才会抛出InterruptedException异常,而非线程池中的工作线程。这澄清了官方文档中"当前线程"的具体含义,为正确处理异步任务中断提供了实践依据。原创 2025-08-26 20:31:17 · 281 阅读 · 0 评论 -
Java定时任务调度
定时任务调度:基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行任务TImer:JDK内置,只有一个线程执行 有且只有一个后台线程对多个业务线程进行定时定频率的调度主要构件:Quartz:第三方jar包,有线程池,定时任务更详细...原创 2018-06-08 20:03:48 · 297 阅读 · 0 评论 -
守护线程
用户线程:运行在前台,执行具体的任务。程序的主线程,连接网络的子线程等都是用户线程守护线程:运行在后台,为其他前台线程服务特点:一旦所有的用户线程都运行结束,守护线程随JVM一起结束工作应用:数据库连接池中的监测线程 JVM虚拟机启动后的监测线程最常见的守护线程:垃圾回收线程注意事项:设置守护线程必须在start()方法之前调用,否则会抛出异常 在守护...原创 2018-06-07 19:40:18 · 807 阅读 · 0 评论 -
线程生命周期
创建:Thread th=new Thread()就绪:创建了线程对象,调用了线程的start()方法(注意:此时线程只是进入了线程队列,等待获取CPU服务,具备了运行的条件,但并不一定已经开始运行)运行:处于就绪状态的线程,一旦获取了CPU资源吗,便进入到运行状态,开始执行run方法的逻辑终止:线程的run()方法执行完毕阻塞:一个正在执行的线程在某些情况下,由于某种原因而暂时让出了CPU资源,...原创 2018-06-07 19:30:30 · 208 阅读 · 0 评论 -
Java线程创建方式的比较
Runnable方式可以避免Thread方式由于Java单继承特性带来的缺陷Runnable的代码可以被多个线程(Thread实例)共享,适用于多个线程处理处理同一资源的情况。原创 2018-06-07 19:20:03 · 236 阅读 · 0 评论 -
使用jstack生成线程快照
jstack:作用:生成JVM当前时刻线程的快照(threaddump,既当前进程所有线程的信息)目的:帮助定位程序问题出现的原因,如长时间停顿,CPU占用率过高原创 2018-06-07 20:47:08 · 1368 阅读 · 1 评论 -
Java多线程之内存可见性
可见性:一个线程对共享变量变量的修改,能够及时地被其他线程看到。Java内存模型:描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。所有的变量都存储在主内存每个线程都有自己独立的工作内存,里面保存该线程使用到的变量的副本线程对共享变量的操作都必须在自己工作内存中进行不能直接从主内存中读写线程变量值的传递需要通过主内存传递可见性实...原创 2018-06-06 21:20:22 · 208 阅读 · 0 评论 -
Java集合中的关系
原创 2018-04-18 23:36:37 · 257 阅读 · 0 评论 -
Java初始化顺序
初始化过程: 1. 初始化父类中的静态成员变量和静态代码块 ; 2. 初始化子类中的静态成员变量和静态代码块 ; 3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;4.初始化子类的普通成员变量和代码块,再执行子类的构造方法; ...原创 2018-04-18 22:59:06 · 202 阅读 · 0 评论
分享