文件上传的多线程型和类加载器
文件上传的多线程型只需要修改一下服务器端,不是每条线程创建一个服务器,就一个服务器,服务器在哪创建就在哪连接,没有连接对象无法获得socket对象,我们就通过构造方法去传递参数,点出空参构造和有参构造,不需要停止删掉释放资源;循环去接收socket对象,异常无法网上抛,点出try catch,将剩余代码放入就完成了

类加载器
类是如何加载到内存中的呢;当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。
加载
就是指将class文件读入内存,并为之创建一个Class对象。
任何类被使用时系统都会建立一个Class对象
连接
验证 是否有正确的内部结构,并和其他类协调一致
准备 负责为类的静态成员分配内存,并设置默认初始化值
解析 将类的二进制数据中的符号引用替换为直接引用
初始化
就是我们以前讲过的初始化步骤,javac编译进入方法数据共享区 main方法进栈 扫描里面的内容执行,new 一个对象的时候在 堆中开辟空间分配一个地址值。

类是什么时候被初始化的呢(类进内存) 1创建一个类对象的时候 2 类的静态变量被赋值的时候 3类的静态方法被调用的时候 4 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 5 创建某个子类对象的时候 6 直接使用java.exe命令来运行某个主类
我们需要学习使用反射这种方法。当我们运行class文件加载到内存中去的时候就会生成class字节码文件,这个文件对象可以访问文件内的所有信息,公有的 私有的 都可以访问。
类加载器帮我们把类加载到内存中去,并生成对应的class对象和Class字节码文件,主要有根类加载器 扩展类加载器 系统了加载器。
通过字节码文件获得成员变量 成员方法 构造方法的过程叫反射。我们可以使用class类中的方法获取字节码文件对象。
获取class类文件对象有三种方法
方式一: 通过Object类中的getObject()方法
方式二: 通过 类名.class 获取到字节码文件对象
方式三: 通过Class类中的方法forName() ---常用
我们获取了对象了,就可以通过反射来获取构造方法并使用,在反射机制中,把类中的成员(构造方法、成员方法、成员变量)都封装成了对应的类进行表示。构造方法使用类Constructor表示。
先获取字节码文件对象,这个对象再调用Constructor类提供的getConstructor()方法,获得公共的构造方法,再通过构造方法类Constructor中的方法,创建对象public T newInstance(Object... initargs),可以调用该类对象的成员方法;代码如图所示


浙公网安备 33010602011771号