java高薪之路__001_类

protected Class<!--?--> loadClass(String name, boolean resolve)throws ClassNotFoundException{
         //加上锁,同步处理,因为可能是多线程在加载类
         synchronized (getClassLoadingLock(name)) {
             //检查,是否该类已经加载过了,如果加载过了,就不加载了
             Class c = findLoadedClass(name);
             if (c == null) {
                 long t0 = System.nanoTime();
                 try {
                     //如果自定义的类加载器的parent不为null,就调用parent的loadClass进行加载类
                     if (parent != null) {
                         c = parent.loadClass(name, false);
                     } else {
                         //如果自定义的类加载器的parent为null,就调用findBootstrapClass方法查找类,就是Bootstrap类加载器
                         c = findBootstrapClassOrNull(name);
                     }
                 } catch (ClassNotFoundException e) {
                     // ClassNotFoundException thrown if class not found
                     // from the non-null parent class loader
                 }

                 if (c == null) {
                     // If still not found, then invoke findClass in order
                     // to find the class.
                     long t1 = System.nanoTime();
                     //如果parent加载类失败,就调用自己的findClass方法进行类加载
                     c = findClass(name);

                     // this is the defining class loader; record the stats
                     sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
                     sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
                     sun.misc.PerfCounter.getFindClasses().increment();
                 }
             }
             if (resolve) {
                 resolveClass(c);
             }
             return c;
         }
     }

  

 1 protected Class<!--?--> loadClass(String name, boolean resolve)throws ClassNotFoundException{
 2          //加上锁,同步处理,因为可能是多线程在加载类
 3          synchronized (getClassLoadingLock(name)) {
 4              //检查,是否该类已经加载过了,如果加载过了,就不加载了
 5              Class c = findLoadedClass(name);
 6              if (c == null) {
 7                  long t0 = System.nanoTime();
 8                  try {
 9                      //如果自定义的类加载器的parent不为null,就调用parent的loadClass进行加载类
10                      if (parent != null) {
11                          c = parent.loadClass(name, false);
12                      } else {
13                          //如果自定义的类加载器的parent为null,就调用findBootstrapClass方法查找类,就是Bootstrap类加载器
14                          c = findBootstrapClassOrNull(name);
15                      }
16                  } catch (ClassNotFoundException e) {
17                      // ClassNotFoundException thrown if class not found
18                      // from the non-null parent class loader
19                  }
20
21                  if (c == null) {
22                      // If still not found, then invoke findClass in order
23                      // to find the class.
24                      long t1 = System.nanoTime();
25                      //如果parent加载类失败,就调用自己的findClass方法进行类加载
26                      c = findClass(name);
27
28                      // this is the defining class loader; record the stats
29                      sun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);
30                      sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);
31                      sun.misc.PerfCounter.getFindClasses().increment();
32                  }
33              }
34              if (resolve) {
35                  resolveClass(c);
36              }
37              return c;
38          }
39      }

时间: 2024-10-11 23:50:51

java高薪之路__001_类的相关文章

java高薪之路__009_网络

1. InetAddress类2. Socket: IP地址和端口号的结合,socket允许程序把网络连接当成一个流,数据在两个socket间通过IO传输, 通信的两端都要有socket. 主动发起通信请求的是客户端,等待通信请求的是服务端3. DatagramSocket 和 DatagramPacket实现了UDP协议网络程序, 使用DatagramSocket发送和接收,系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达 DatagramPacket对象封装了UDP数

java高薪之路__002_异常处理

自定义异常 1 package learn.JavaBasics.Class; 2 3 import java.util.Date; 4 5 /** 6 * 如何自定义一个异常类 7 * 1. 继承一个现有的异常类 8 * 2. 提供一个序列号,提供几个重载的构造器 9 * 3. 像其异常一样使用 10 */ 11 public class MyException extends RuntimeException { 12 private static final long serialVers

java高薪之路__006_多线程

线程的创建有两种方式 1 package learn.JavaBasics.Class; 2 3 public class ThreadDemo extends Thread { 4 private static int count = 1; 5 6 public void run() { 7 System.out.println("Thread: "+count+" has started"); 8 ++count; 9 } 10 11 /** 12 * @par

java高薪之路__004_泛型

参考地址: 1. http://www.cnblogs.com/lwbqqyumidi/p/3837629.html2. http://www.cnblogs.com/abcwt112/p/4735068.html3. http://www.cnblogs.com/chyu/p/4630798.html 1 package learn.JavaBasics.Class; 2 3 public class GenericDemo { 4 private class Test<E> { 5 pri

JAVA进阶之路(一)

初学的大三奋斗者,fighting!!! 下面是进阶之路 Java平台和语言最开始只是SUN公司在1990年12月开始研究的一个内部项目.SUN公司的一个叫做帕特里克·诺顿的工程师被自己开发的C和C语言编译器搞得焦头烂额,因为其中的API极其难用.帕特里克决定改用NeXT,同时他也获得了研究公司的一个叫做“Stealth 计划”的项目的机会. “Stealth 计划”后来改名为“Green计划”,JGosling(詹姆斯·高斯林) 和麦克·舍林丹也加入了帕特里克的工作小组.他们和其他几个工程师一

Java学习之路(二)--Thinking in Java

针对昨天Java学习之路(一)--Thinking in Java中的类的静态方法不能访问创建非静态类,给出了将内部类修改成为static静态类,操作方便简单.现在给出第二种不需要添加删除的另一种极为高效的方式.可以将内部类从你所创建的类中复制粘贴到类外,作为一个外部类,在static主方法中就可以创建类的引用了. 源代码如下: ? class test{ int s; char c; } public class test1 { public static class test{ int s;

Java学习之路:1、HelloWorld

似乎每种语言都是从HelloWorld开始的,所以,我的第一个java程序,也应该是这样开始的! 1.配置好jdk后,开始编写HelloWorld.java package second;//这个应该在我的理解就相当于php的命名空间 public class HelloWorld {//如同php中的声明一个类,不过php是不需要加public这样的类型修饰符 public static void main(String[] args){//声明一个方法,不过不懂的是为什么一定要static:

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

Java学习之路:2、Mysql 链接与查询

1.事实上我发现有了php的功力在里面,学习java起来还是不是很费劲,只是java就没有面向过程这一说 package second; import java.sql.*;//导入 public class mysql { public static void main(String[] args) throws SQLException{ String driver = "com.mysql.jdbc.Driver";//声明要被导入的类 String dsn = "jd