卢雨杰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 对象创建对象
设计模式
并行:指两个或多个事件在同一时刻发生(同时执行)。
并发:指两个或多个事件在同一个时间段内发生(交替执行)。
进程
进程是系统运行的基本单位
每一个进程都有自己独立的空间、一组系统资源
每一个进程内部数据和状态都是完全独立的
每一个应用程序运行时都会产生一个进程
线程
线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个 进程内执行。
线程是进程内部的一个执行单元,是可以完成一个独立任务的顺序控制流程。一个进程中至少有一个 线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序
进程与线程的区别
进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线 程。 线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小的多。
多线程和多进程的区别
本质的区别在于每个进程拥有自己的一套变量,而线程则是共享数据。线程之间共享数据是有风险的 (后边分析),然而共享变量使线程之间的通信比进程之间通信更有效、更容易。此外,在有的操作系 统中,与进程相比,线程更"轻量级",创建、撤销一个线程比启动新的进程开销要小的多
- 分时调度 所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时间。
- 2. 抢占式调度 优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个(线程随机性), Java 使用的为抢占式调度
学习心得:两天不上晚自习,堆起了一堆任务
近期评论