Java JDK1.8源码学习之路 1 Object
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java JDK1.8源码学习之路 1 Object,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2351字,纯文字阅读大概需要4分钟。
内容图文
写在最前
对于一个合格的后端程序员来说,现行的流行框架早已经能胜任基本的企业开发,Springboot 任何的框架都把重复的工作更佳简单/优化的解决掉,但是完全陷入在这样的温水里面,
好比温水煮青蛙,越是舒服下去,越不行,还是那句话,万变不离其宗。真正能了解JAVA在多少年来经久不衰的秘密,以及最基础,也是最重要的,还是得从源码下手,了解JDK开发人员的编码规范
以及实现JDK过程中的思路以及为了更加了解这款完美的语言!
中文在线版:https://blog.fondme.cn/apidoc/jdk-1.8-youdao/
目录
- 01 java.lang.Object 源码解读
- 02 java.lang.String 源码解读
public class Object {
//native 方法用于注册一个系统
//native是一个计算机函数,一个Native Method就是一个Java调用非Java代码的接口。方法的实现由非Java语言实现,比如C或C++。
private static native void registerNatives();
//静态方法块 在这个类加载的时候去调用这个静态的registerNatives()方法,用于注册这个调用系统底层的接口
static { registerNatives(); } //getClass 这个方法对于熟悉JAVA的反射再熟悉不过了
//反射就是在java运行过程中,通过类名.getClass() 可以获取到这个类运行过程中的字节码文件(Class文件)
public final native Class<?> getClass(); //hasCode返回一个对象在内存里面所表示的hash值
//如果两个对象的hash值相同,则表示这两个对象是相等的,或者说是同一个对象
publicnativeint hashCode(); //比较两个对象是否相等,这里使用的是 ==号比较符号,判断两个对象是否有相同的内存地址。
//这里复习一下,==比较基本类型 比如int char floot 都比较的是他们的值
//对象使用 == 比较的时候比较的是他们的内存地址。
publicboolean equals(Object obj) { return (this == obj); } //对象的克隆方法,需要被克隆的对象需要实现Cloneable 接口 调用父类的clone()方法实现对象的克隆protectednative Object clone() throws CloneNotSupportedException; //toString 方法,用于直观的表现出当前对象,一般表现形式是 对象名称+@+十六进制哈希值public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } //唤醒正在等待这个对象的某一个线程,这个唤醒是任意的publicfinalnativevoid notify(); //唤醒所有等待当中的线程publicfinalnativevoid notifyAll(); //让一个线程进入等待状态,传入一个毫秒数后运行,或者由另一个线程调用notify()方法让这个线程再次运行
publicfinalnativevoid wait(long timeout) throws InterruptedException; //传入第二个参数,纳秒,是为了更好的控制让线程从等待到运行publicfinalvoid wait(long timeout, int nanos) throws InterruptedException { if (timeout < 0) { thrownew IllegalArgumentException("timeout value is negative"); } if (nanos < 0 || nanos > 999999) { thrownew IllegalArgumentException( "nanosecond timeout value out of range"); } if (nanos > 0) { timeout++; } wait(timeout); } //这个方法其实就是调用wait方法,只不过传入一个0ms的参数publicfinalvoid wait() throws InterruptedException { wait(0); } //这个方法和垃圾回收机制有关,通知垃圾回收器开始运行,但是运行的具体时间不确定,垃圾回收器会清理掉当前内存中没有引用的对象protectedvoid finalize() throws Throwable { }
笔记:
阻塞状态:(等待状态)
一个线程执行了sleep() 或者suspend(挂起)后,将会失去CPU资源,进入阻塞状态。在睡眠时间过后,就会再次进入就绪状态。
阻塞的分类
- 等待阻塞:运行状态中,线程执行了wait()方法,使其进入等待状态
- 同步阻塞:在一个线程获取synchronized 同步锁失败(已经被占用)
- 其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态
原文:https://www.cnblogs.com/ChromeT/p/11651372.html
内容总结
以上是互联网集市为您收集整理的Java JDK1.8源码学习之路 1 Object全部内容,希望文章能够帮你解决Java JDK1.8源码学习之路 1 Object所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。