Java JDK1.8ソース学習の道1 Object

6218 ワード

いちばん前に書く
合格したバックエンドプログラマーにとって、現行の流行フレームワークはすでに基本的な企業開発に適任しており、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 , ,
    public native int hashCode(); // , == , 。
      // ,== int char floot
      // == 。
    public boolean equals(Object obj) { return (this == obj); } // , Cloneable clone() protected native Object clone() throws CloneNotSupportedException; //toString , , +@+ public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } // , public final native void notify(); // public final native void notifyAll(); // , , notify()
    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 > 0) { timeout++; } wait(timeout); } // wait , 0ms public final void wait() throws InterruptedException { wait(0); } // , , , protected void finalize() throws Throwable { }

     
    メモ:
    ブロックステータス:(待機ステータス)
    スレッドがsleep()またはsuspend(保留)を実行すると、CPUリソースが失われ、ブロック状態になります.スリープ時間が経過すると、再び準備完了状態になります.
    ブロックの分類
  • 待機ブロック:実行状態において、スレッドはwait()メソッドを実行し、待機状態
  • に入る.
  • 同期ブロック:synchronized同期ロックを1つのスレッドで取得できませんでした(すでに占有されています)
  • その他のブロック:スレッドを呼び出すsleep()またはjoin()によってI/O要求が発行されると、スレッドはブロック状態
  • に入る.