java基础入门补充(004) Object类
原文链接:
Java Object类
java Object类源代码详解 及nativ
package java.lang;
public class Object {
private static native void registerNatives();
static {
registerNatives();
}
public final native Class<?>
getClass();
public native int hashCode();
public boolean equals(Object obj) {
return (
this == obj);
}
protected native Object
clone()
throws CloneNotSupportedException;
public String
toString() {
return getClass().getName() +
"@" + Integer.toHexString(hashCode());
}
public final native void notify();
public final native void notifyAll();
public final void wait()
throws InterruptedException {
wait(
0);
}
public final native void wait(
long timeout)
throws InterruptedException;
public final void wait(
long timeout,
int nanos)
throws InterruptedException {
if (timeout <
0) {
throw new IllegalArgumentException(
"timeout value is negative");
}
if (nanos <
0 || nanos >
999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos >=
500000 || (nanos !=
0 && timeout ==
0)) {
timeout++;
}
wait(timeout);
}
protected void finalize()
throws Throwable { }
}
1.volatile:为了获得最佳速度,Java允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比,volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值,volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。 使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。
2.transient:transient声明一个实例变量,当对象存储时,它的值不需要维持
3.native:native是方法修饰符,native是由另外一种语言实现的本地方法
以上即为转载内容,作为一名初学java的,深知学习不易,学完也不易,打算把自己日常收集的资料整理学习一番,在这里打算列一个表单,记录一些知识点,由于实力不足以自己钻研,只好转载一部分自己看过的文章,整理一番。希望明年能够学习有所进步吧,自勉。 2017-08-06