JDK源码阅读之一-----Object

原创 2012年03月31日 14:22:15
package java.lang;

/**
 *
 * Object类是所有类的超类
 */
public class Object {
    /* getClass、hashCode都是native方法,顺便在这里复习一下native方法吧,简单的讲一个native方法
       就是一个java调用非java代码的接口
    */
    private static native void registerNatives();
    static {
        registerNatives();
    }
    
    public final native Class<?> getClass();

    public native int hashCode();
    
    // equals方法,是用==号写的,在这里使用equals方法和使用==是一样的,所以要重写equeals方法
    public boolean equals(Object obj) {
	return (this == obj);
    }

    
    protected native Object clone() throws CloneNotSupportedException;

   
    public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    // notify、notifyAll、wait这些操作线程的方法使劲上是Ojbect里的方法
    public final native void notify();

    public final native void notifyAll();
     * @param      timeout   the maximum time to wait in milliseconds.
     * @exception  IllegalArgumentException      if the value of timeout is
     *		     negative.
     * @exception  IllegalMonitorStateException  if the current thread is not
     *               the owner of the object's monitor.
     * @exception  InterruptedException if any thread interrupted the
     *             current thread before or while the current thread
     *             was waiting for a notification.  The <i>interrupted
     *             status</i> of the current thread is cleared when
     *             this exception is thrown.
     * @see        java.lang.Object#notify()
     * @see        java.lang.Object#notifyAll()
     */
    public final native void wait(long timeout) throws InterruptedException;
     * @param      timeout   the maximum time to wait in milliseconds.
     * @param      nanos      additional time, in nanoseconds range
     *                       0-999999.
     * @exception  IllegalArgumentException      if the value of timeout is
     *			    negative or the value of nanos is
     *			    not in the range 0-999999.
     * @exception  IllegalMonitorStateException  if the current thread is not
     *               the owner of this object's monitor.
     * @exception  InterruptedException if any thread interrupted the
     *             current thread before or while the current thread
     *             was waiting for a notification.  The <i>interrupted
     *             status</i> of the current thread is cleared when
     *             this exception is thrown.
     */
    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);
    }

    public final void wait() throws InterruptedException {
	wait(0);
    }

    protected void finalize() throws Throwable { }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JDK源码阅读之Object类

JDK源码阅读之Object类源代码package java.lang; public class Object { /* 一个本地方法,具体是用C(C++)在DLL中实现的,...

JDK源码(一)Object类

JDK源码(一)Object类最近找工作,面试很多大公司都问看没看JDK源码,所以了解JDK源码还是有必要的,因为了解底层的一些实现原理,才能选择更适合的方法解决问题。所以本人决定好好研究一下JDK源...

JDK源码解析基础篇--java.lang.Object及其方法约定

这是源码阅读的开端,当然选择从类层次结构的根类--java.lang.Object类开始。 所有类的默认继承Object类(若没有继承其他类),Object类是继承体系的根类,由类直接或间接继承。 ...

JDK源码之Object类详解

从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解。 Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Jav...

从JDK源码角度看Object

Java的Object是所有其他类的父类,从继承的层次来看它就是最顶层根,所以它也是唯一一个没有父类的类。它包含了对象常用的一些方法,比如getClass、hashCode、equals、clone、...

[Lua源码阅读] 理解Lua的object

Lua的object定义在lobject.h文件中。Lua中总有有9种数据类型:nil, boolean, lightuserdata, number, string, table, userdata...

Java Object类源码阅读

/** * Object类是类层次结构的根类。Object类是每一个类的超类。所有对象,包括数组, * 都实现了这个类的方法。 */ public class Object1 { Object ...

Object源码阅读

Object源码

源码阅读1-Object

PS:从2014年毕业到2017年初做java开发也有2个半年头了,开发过程中用到的java类很少去点开看下源码,在使用的时候也仅仅是大致的使用一下,并不了解内部实现,对自己而然就是一个黑盒子,包括后...

阅读Object类源码

在java中,Object类是所有类的父类,其位于java.lang 包下。从源码中可以看出其定义了13个方法,但是浏览源码后并没有看到显示定义public Object() 构造函数,估计是设计者使...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)