Java之易忘小知识
Java之易忘小知识
1、instanceof关键字
(1)用于判断某个对象是否是某种类型。
(2)格式
对象名 instanceof 子类(实现)名
2、Object类中的方法
(1)void finalize()
当垃圾回收器确定不存在对该对象的更多引用时调用此方法
(2)Class getClass()
获取对象的字节码文件的描述类
(3)int hashCode()
获取对象的哈希值,对象的内存地址值十进制表示
(4)String toString()
返回对象的字符串表示
(5)boolean equals(Object obj)
用于比较两个对象的地址值是否相同
3、==和equals
(1)==
比较基本数据类型: 基本数据类型的值是否相等。
比较引用数据类型: 对象的地址值是否相等。
(2)equals
只能比较引用数据类型
Object提供的equals是用于比较对象地址值是否相同
4、JVM启动至少有两个线程,一个执行java程序,一个执行垃圾回收,是多线程
5、多线程中start()和run方法区别
(1)调用start方法方可启动线程,而run方法只是thread的一个普通方法,调用run方法不能实现多线程
(2)start方法用来启动线程,实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。
(3)run()方法只是Thread类的一个普通方法,如果直接调用Run方法,程序中依然只有主线程这一个线程,
其程序执行路径还是只有一条,还是要等待run方法体执行完毕后才可继续执行下面的代码,
这样就没有达到多线程的目的。
6、多线程中Lock和Condition
同步synchonized替换成了显示的Lock操作,将Object中的wait、notify、notifyAll替换成了Condition对象,可以Lock锁进行获取
Lock的方法摘要:
void lock() 获取锁。
Condition newCondition() 返回绑定到此 Lock 实例的新 Condition 实例。
void unlock() 释放锁。
Condition方法摘要:
void await() 造成当前线程在接到信号或被中断之前一直处于等待状态。
void signal() 唤醒一个等待线程。
void signalAll() 唤醒所有等待线程。