【重难点总结】第一章 Java 基础
文章目录
一、sleep() 和 wait()
1.共同点
- 都可用于阻塞线程指定毫秒数
- 都可通过 interrupt() 打断阻塞,使线程抛出InterruptedExpcetion
2.不同点
- sleep 可以在 synchronized 外调用,wait必须在 synchronized 下使用
- sleep 不释放锁,wait 会释放锁
- sleep 是 Thread 类下的方法,wait 是 Object 类下的方法
- sleep 必须捕获异常,而 wait 不需要捕获异常
- sleep 方法是根据指定时间自动唤醒或被中断唤醒,wait 方法需要被 notify 或 notifyAll 唤醒,或者被中断唤醒
- sleep 是简单的延迟工具,不释放锁,常用于定时任务
- wait 用于线程间的协调和通信,释放锁,必须与 synchronized 一起使用,并依赖 notify 或 notifyAll 唤醒
二、强软弱虚引用
1.作用
帮助垃圾回收器判断对象的回收优先级,开发者可以通过强软弱虚引用控制某些对象的生命周期
需要先声明一个对象,然后将其作为参数再声明一个 SoftReference<T>,表示这个对象是弱引用
String str = new String("abc");
SoftReference<String> softRefStr = new SoftReference