java源码阅读——Object

2 篇文章 0 订阅
1 篇文章 0 订阅

Class {@code Object} is the root of the class hierarchy.

Every class has {@code Object} as a superclass.

Object :是所有类的父类,所有类都继承了Object

 

方法列表:

在参数列表中,

N:代表该方法是一个native方法。

F:代表该方法是一个final方法。

S:代表该方法是一个static方法。

 

1、native:native是java中的一个关键字,用于修饰方法,表明该方法是一个原生方法。

eg:    public native int hashCode();

认识 native,首先要了解java本地接口 即 JNI,Java Native Interface

凡是一种语言,都希望是纯。比如解决某一个方案都喜欢就单单这个语言来写即可。Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (Java本地接口)。

image

JNI主要作用是:通过JNI接口调用其他语言来实现对底层的访问。

Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。

JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码。

native方法表明该方法本身不进行实现,而是直接调用其他语言编写的程序。

资料参考:https://www.cnblogs.com/b3051/p/7484501.html

 

2、wait()、notify()、notifyAll()方法

这三个方法主要与多线程密切相关,程序的并发编程都是通过多线程来实现的。

并行合并发:

并发与并行是两个既相似但是却不相同的概念:

         并发性:又称共行性,是指处理多个同时性活动的能力,。

         并行:指同时发生两个并发事件,具有并发的含义。并发不一定并行,也可以说并发事件之间不一定要同一时刻发生。 

     并发的实质是一个物理CPU(也可以是多个物理CPU)在若干个程序之间多路复用,并发性是对有限物理资源强制行使 多用户共享以提高效率。

     并行指两个或两个以上事件或活动在同一时刻发生,在多道程序环境下,并行使多个程序同一时刻可在不同CPU上同时执行。    

     并发是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为CPU要在多个程序之间切换)运行多个程序。

     并行是在多个CPU的情况下,多个CPU同时运行多个程序。

wait():使当前线程释放锁,进入等待队列。

notify():唤醒等待队列中的第一个线程。

notifyAll():唤醒等待队列中的所有线程。

线程的生命周期:

参考资料:https://www.cnblogs.com/duanxz/p/3733179.html

 

3、hashCode():返回该对象的哈希值。

Object 的 hashcode 方法是本地方法,也就是用 c 语言或 c++ 实现的,该方法直接返回对象的 内存地址。

4、equals():判断两个对象是否相等。

我们在创建一个类的时候,可以按照自己的需要重写hashCode()equals()方法

5、finalize()

  • finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。

(1) 首先,大致描述一下finalize流程:当对象变成(GC Roots)不可达时,GC会判断该对象是否覆盖了finalize方法,若未覆盖,则直接将其回收。否则,若对象未执行过finalize方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize方法。执行finalize方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收,否则,对象“复活”。

(2) 具体的finalize流程:

对象可由两种状态,涉及到两类状态空间,一是终结状态空间 F = {unfinalized, finalizable, finalized};二是可达状态空间 R = {reachable, finalizer-reachable, unreachable}。各状态含义如下:

  • unfinalized: 新建对象会先进入此状态,GC并未准备执行其finalize方法,因为该对象是可达的
  • finalizable: 表示GC可对该对象执行finalize方法,GC已检测到该对象不可达。正如前面所述,GC通过F-Queue队列和一专用线程完成finalize的执行
  • finalized: 表示GC已经对该对象执行过finalize方法
  • reachable: 表示GC Roots引用可达
  • finalizer-reachable(f-reachable):表示不是reachable,但可通过某个finalizable对象可达
  • unreachable:对象不可通过上面两种途径可达
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值