卢雨杰1019

学习内容:

反射(reflect):****

是Java的特性之一,反射机制是构建框架技术的基础所在

反射机制:指在运行中能够动态的获取类的信息(类的方法和属性)

以及动态调用对象方法的功能

Java类的自审:

​ Java反射机制能够知道类的基本结构,这种对类的结构的探知能力

被称为Java类的自审

获取类的信息的三种方法:

​ ① 对象.getClass;

​ ② Class.forName(包名+类名);

​ ③ 类名.Class

 Class<Student> c = Student.class;
       System.out.println(c);
       Student stu = new Student();
         Class a =    stu.getClass();
         System.out.println(a);
       try {
        Class b Class.forName("hello.Demo$1Student");
        System.out.println(b);
    } catch (ClassNotFoundException e) {
e.printStackTrace();
}

从Class对象中获取信息

Constructor

    try {
        //获取无参构造函数,只能是public修饰的
        Constructor<Class> cc = c.getConstructor();
        System.out.println(cc);
        //获取有参构造函数
    Constructor ccc = c.getConstructor(String.class);
        System.out.println(ccc);
        //获取Class对象所包含的类的所有public的构造方法
         Constructor[] CC = c.getConstructors();
         System.out.println(Arrays.toString(CC));
         //获取class类所包含的指定的构造方法,即使是private修饰的也能够被访问
          Constructor aa = c.getDeclaredConstructor();
               System.out.println(aa);
    } catch (NoSuchMethodException e) {
        e.printStackTrace();
    } catch (SecurityException e) {
        e.printStackTrace();
    }

Method

   //获取带参数的方法
   Method methon = c.getMethod("eat",String.class);
      System.out.println(methon);
      //返回此class对象所包含的类的所有public的而制定方法
      Method methond = c.getMethod("run");
      System.out.println(methon);
      //返回此class对象所包含的类的指定的方法,与方法的访问级别无关
       Method a = c.getDeclaredMethod("run");
          System.out.println(a);
     //返回此class对象所包含的类的全部方法,与方法的访问级别无关
          Method[] aa = c.getDeclaredMethods();
           System.out.println(Arrays.toString(aa));

Filed

public Field getField(String name) 根据名称获取 public 属性

public Field[] getFields() 获取所有 public 属性 public Field getDeclaredField(String name) 获取声明的属性 public Field[] getDeclaredFields() 获取所有声明的属性

用反射创建对象的两种方式

使用 Class 对象的 newInstance() 方法创建对象 ( newInstance() 要注意, Class 对象中必须要有且可访问的无参构造方法(默认构造))

使用 Constructor 对象创建对象

设计模式

并行:指两个或多个事件在同一时刻发生(同时执行)。

并发:指两个或多个事件在同一个时间段内发生(交替执行)。

进程

进程是系统运行的基本单位

每一个进程都有自己独立的空间、一组系统资源

每一个进程内部数据和状态都是完全独立的

每一个应用程序运行时都会产生一个进程

线程

线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个 进程内执行。

线程是进程内部的一个执行单元,是可以完成一个独立任务的顺序控制流程。一个进程中至少有一个 线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序

进程与线程的区别

进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线 程。 线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多。

多线程和多进程的区别

本质的区别在于每个进程拥有自己的一套变量,而线程则是共享数据。线程之间共享数据是有风险的 (后边分析),然而共享变量使线程之间的通信比进程之间通信更有效、更容易。此外,在有的操作系 统中,与进程相比,线程更"轻量级",创建、撤销一个线程比启动新的进程开销要小的多

  1. 分时调度 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
  2. 2. 抢占式调度 优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性), Java 使用的为抢占式调度

学习心得:两天不上晚自习,堆起了一堆任务

标签

评论

this is is footer