天天看点

笔记————反射、动态代理、多线程

JAVA反射机制能够使java拥有动态性。 在运行状态中,能够获取能某个类的所有属性和方法;

对于任意一个对象,能够调用它的任意一个方法和属性;这种能够 动态地 获取的信息、调用对象的方法的功能称为java的反射机制。

用到反射,必须认识到:类对象(Class类)每一个字节码文件对应的Class类型的对象

在java中,类是最小的单位。而Class 类 表示正在运行的 Java 程序中的类或接口。当JVM读取到类时,会发生类加载(类加载知识,见以前笔记),生成Class类的对象。

那么,可以通过构造方法自己创建类对象吗?

当然。。。。不能,Class没有公共构造方法(被私有化了),Class对象只能在类加载时,由虚拟机JVM以及通过 类加载器中的 defineClass方法 自动构造。

通过Java的反射 ,在程序运行时创建一个实现某些给定接口的实现类(动态代理类)和对象

代理的接口在运行时才知道具体的实现。

proxy:就是代理对象,newProxyInstance方法的返回对象

method:调用的方法

args: 方法的参数

程序: 一组能识别和执行的指令。

进程:正在运行的程序,在内存中有指定的区域 ,由CPU进行执行与计算操作。

线程:操作系统能够进行运算调度的最小单位,一个进程可以开启多个线程,有一个主线程来调用本进程中的其他线程。

一个操作系统中可以有多个进程,一个进程中可以包含一个或多个线程。

计算机中,一个 cpu只能执行一个进程中的一个线程。一个CPU只能串行

并行是指同一时刻多个CPU可以处理多件事 称为并行,类似于两辆车并排跑

一个CPU只能执行一个进程中的一个线程。在线程运行时,cpu会随机给某个线程分配时间片(既你可以工作多长时间),当时间片用完时,若该线程还没有完成工作,cpu将被剥夺并分配给另一个线程。将当前线程挂起,如果线程在时间片用完之前阻塞或结束,则cpu立刻进行切换, 避免CPU资源浪费,当再次切换到之前挂起的线程,恢复现场,继续执行。

笔记————反射、动态代理、多线程

Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例,启动线程的唯一方法就是通过Thread类的start()实例方法

如果类已经extends另一个类,就无法多继承,可以实现一个Runnable接口

void run()使用实现接口Runnable的对象创建线程时,启动该线程将导致在独立执行的线程中调用对象的run()方法