-
Java 中的 ThreadLocal
说明 这里的内存泄露指的是:Thread长时间运行,尤其是线程池中的线程,由于Thread中的threadLocals中的Entry数组包含了关联ThreadL
-
Java 中 Thread 的中断方法
interrupt() 给线程设置一个中断状态,线程仍会继续运行。 但如果线程正好处于等待状态(如:调用wait()、sleep()、join()方法),此时调
-
Java 中 Thread 的 join 方法
介绍 Waits for this thread to die. join()方法上的注释是等待该线程销毁。 t1.join()表示等待t1线程执行完成,继
-
Java 中 Thread 的状态
示意图 NEW 初始化状态 new一个Thread(Runnable)或Thread子类等(不调用start()方法),线程就进入NEW状态。 Thread
-
Java 并发的基石 LockSupport
LockSupport LockSupport类使用了一种名为Permit(许可)的概念来做到阻塞和唤醒线程的功能。 每个线程都有一个许可(Permit)。 p
-
Java 中的锁 StampedLock
主要方法 readLock():获取悲观读锁,阻塞等待。 unlockRead():释放读锁。 writeLock():获取悲观写锁,阻塞等待。 unlock
-
Java 中的锁 ReentrantReadWriteLock 读写锁
读写锁 读读不互斥,读写互斥,写写互斥。 代码示例 public class ReadWriteLockDemo { public static vo
-
Java 中的锁 ReentrantLock
特性 可重入、互斥(读写互斥、写写互斥、读读互斥),只能有一个线程进行操作。 默认是非公平锁,可通过构造函数指定是否是公平锁。非公平锁性能略微好一些,主要是第一
-
Java 中的自旋锁
自旋锁 使用CAS+无限循环组成自旋锁。 原子引用类保存持有锁的线程,其他线程将使用CAS+自旋争夺锁。 示例代码 public class SpinLockD
-
Java 中的死锁
描述 线程A先锁定DeadLock字节码对象,在内部延迟1秒,再锁定Object字节码对象。 线程B先锁定Object字节码对象,在内部延迟1秒,再锁定Dead
-
Java 中的锁 synchronized
锁的状态 无锁状态、偏向锁、轻量级锁、重量级锁。 偏向锁加锁过程 访问Mark Word中偏向锁的标识是否设置成1,锁标志位是否为01,确认为可偏向状态。 如
-
Java 中的锁
关键词和类 synchronized ReentrantLock ReentrantReadWriteLock StampedLock LockSupport
-
Java 中的强引用、软引用、弱引用、虚引用、引用队列
强引用 不会被垃圾回收,OOM也不会对该对象进行回收。因此强引用也是造成Java内存泄漏的主要原因之一。 new出来的对象为强引用,obj2指向obj1后obj
-
Java 中的动态代理
Java 内置 API 使用Proxy类代理一个对象,该对象必须实现一个接口。故Java内置的API只能代理实现了接口的对象。 private static c
-
Java 中的反射
作用 判断任意一个对象所属的类 构造任意一个类的对象 判断任意一个类所具有的成员变量和方法 获取泛型信息 调用任意一个对象的成员变量和方法 处理注解 动态代理
2021-03-31, Views: 2167 , Topics: Java
-
Java8 引入的时间处理类
相关类 Instant:代替 Date DateTimeFormatter:线程安全,代替 SimpleDateFormat LocalTime LocalD
2021-03-30, Views: 2419 , Topics: Java
-
GitHub OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
错误原因 最近使用GitHub,不管是git pull还是git push,经常是连接超时,今天直接报SSL_ERROR_SYSCALL。 搜索到的解决方法(未
-
Git 撤销 commit 和回退到指定 commit
git reset 撤销commit针对的是本地已提交,而还没有push到远程。 HEAD^ 和 HEAD~ 撤销前一次提交 注意HEAD^的双引号,不加双引号
2021-03-27, Views: 9883 , Topics: Git
-
Git 修改 commit 留言
amend 只能修改最新一次的commit,本地无commit则修改线上的最新一次commit的留言。 留言内容使用双引号括起来。 git commit --a
2021-03-26, Views: 3851 , Topics: Git
-
Java FutureTask 源码解析
说明 本文基于Java8。 构造方法 传入Callable对象,使用成员变量接收,并将状态改为NEW。 private Callable<V> ca