https://www.nowcoder.com/discuss/22089
Object 类有哪些方法
protected Object clone()创建并返回此对象的一个副本。
boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。
protected void nalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的
垃圾回收器调用此方法。
Class<?> getClass()返回此 Object 的运行时类。
int hashCode()返回该对象的哈希码值。
void notify()唤醒在此对象监视器上等待的单个线程。
void notifyAll()唤醒在此对象监视器上等待的所有线程。
String toString()返回该对象的字符串表示。
void wait()在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线
程等待。
void wait(long timeout)在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,
或者超过指定的时间量前,导致当前线程等待。
void wait(long timeout, int nanos)在其他线程调用此对象的 notify() 方法或
notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致
当前线程等待。
介绍一下 Java 中 volatitle 关键字
因为 volatile 只能保证内存可见性,却没有保证对变量操作的原子性
在 java 垃圾回收整理一文中,描述了 jvm 运行时刻内存的分配。其中有一个内存区域是
jvm 虚拟机栈,每一个线程运行时都有一个线程栈,
线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过
对象的引用找到对应在堆内存的变量的值,然后把堆内存
变量的具体值 load 到线程本地内存中,建立一个变量副本,之后线程就不再和对象在堆内
存变量值有任何关系,而是直接修改副本变量的值,
在修改完之后的某一个时刻(线程退出之前),自动把线程变量副本的值回写到对象在堆
中变量。这样在堆中的对象的值就产生变化了,下面一幅图描述这写交互
评论0