Java
文章平均质量分 51
失败的Cc
这个作者很懒,什么都没留下…
展开
-
Java中的Thread、Runnable、Callable
Thread和Runnable区别 Thread实际上是将线程和任务合并在了一起,Runnable是将线程和任务分离, Thread内部的run方法的具体实现如下,target即使通过构造器传过来的参数,如果不为空则调用target的run方法。public void run() { if (target != null) { target.run(); } } Callable的使用 举例:调用run方法时,Callable的call方法就会被调用,并且结果会.原创 2021-09-25 08:16:57 · 106 阅读 · 0 评论 -
Java的Class类和相关的类
Class类位于java.lang包中,是一个泛型类,任何类型都有class对象,包括int,void 重要方法 获取类的名称信息:Class类是一个泛型类,主要方法getName()、getSimpleName()、getCanonicalName()、getPackage() 获取字段信息:getFields()、getDeclaredFields()、getField(String name)、getDeclaredField(String name) 获取方法信息:getMethods()、g.原创 2021-09-24 19:46:37 · 150 阅读 · 0 评论 -
操作系统和Java中的线程
操作系统将线程分为了5种状态,如图 解释 初始状态:表示在语言层面创建了线程,但是没有和操作系统线程相关联 可运行状态:线程已经和操作系统相关联,等待CPU调度 运行状态:正在CPU上执行 阻塞状态:线程被阻塞,等待其他事件唤醒该线程 终止状态:线程执行结束。 Java将线程分为6中状态(在Thread类中有一个枚举类State),如图 解释 NEW:线程被创建,但是没有调用start()方法 RUNNABLE:调用了start()方法,涵盖了操作系统的可运行、运行、阻塞(..原创 2021-09-24 19:45:24 · 71 阅读 · 0 评论 -
Java中与并发相关的一些方法
Thread.sleep(long):从本线程调用,让当前线程睡眠,可能睡眠被interrupt方法打断而抛出InterruptedException异常。 t1.interrupt():从其他线程调用,将t1线程的sleep、wait、yield打断,强制唤起t1线程。此时可以在t1线程内部的调用Thread.curruptThread().inInterrupted()查看是否被其他线程打断,并且只能使用一次(如果在睡眠时被打断,那么还是会为false,但是此时会抛出异常,可以在catch语句中再次调.原创 2021-09-24 19:43:50 · 63 阅读 · 0 评论 -
Java类加载器
什么时候需要实现自定义类加载器? 想加载非 classpath 随意路径中的类文件 都是通过接口来使用实现,希望解耦时,常用在框架设计 这些类希望予以隔离,不同应用的同名类都可以加载,不冲突,常见于 tomcat 容器 注意 自定义类加载器 加载同一个类的时候,如果使用的是同一个类加载器,那么两个加载出来的class对象是相通的,如果不是同一个类加载器,则加载出来的class对象是不同的。 因为每一个类加载器进行加载类时,都会检查自己是否加载过这个类,如果加载过,则直接返回class对象。 .原创 2021-09-24 19:40:16 · 71 阅读 · 0 评论 -
Java中的语法糖
字符串相加: 实际上是创建的StringBuilder进行操作 默认构造器 自动生成默认无参构造器,调用super(); 自动拆装箱 基本类型和对应的包装类会自动转换。 泛型 在编译后会进行擦除,比如在List中,编译器会自动将加入List的对象转换为Object,在取出时会转换为对应类型 枚举类 举个例子 enum Sex { MALE, FEMALE } 经过编译器转化后 public final class Sex extends En.原创 2021-09-24 19:38:40 · 61 阅读 · 0 评论 -
JVM笔记
划分 类加载 将类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要 field 有: _java_mirror 即 java 的类镜像,例如对 String 来说,就是 String.class,作用是把 klass 暴露给 java 使用 _super 即父类 _fields 即成员变量 _methods 即方法 _constants 即常量池 _class_loader 即类加载器 _vtable 虚方法表 _itable 接口方法表 如果这个原创 2021-09-23 17:30:16 · 66 阅读 · 0 评论 -
Java动态代理
主要是实现动态增强接口的功能 具体实现: 写一个接口,接口中封装了客户端需要的操作。 写一个委托类实现该接口 写一个代理类实现InvocationHandler接口,这个类中存在委托类的引用 客户端利用Proxy类的静态方法(反射技术),让接口关联代理实现类的对象,利用接口来调用方法,实际通过代理来访问委托类的方法。 静态代理 写一个接口A,定义一些功能 写一个类B,实现接口 写一个类C,实现接口,并且C的内部有一个B实例,构造方法中也需要传入一个B对象b,重写接口方法时实际上是调用b对象的对应方.原创 2021-09-22 00:30:15 · 97 阅读 · 0 评论 -
Java中的反射
要弄清楚反射,先得弄清楚类加载过程和Class类中的内容 类加载过程 ClassLoader类有三个具体实现,AppClassLoader,ExtClassLoader,BootStrapClassLoader,并且类中有一个parent对象指向父加载器。 当执行类加载过程时,执行loadClass()方法,会对进行类的字符串进行加锁,并且先判断是否加载过这个类,如果父类不为空,则调用parent.loadClass();加载成功则直接返回Class对象。 当加载失败时会执行findClass()方法.原创 2021-09-22 00:22:38 · 73 阅读 · 0 评论 -
Java笔记
Java 文章目录数组和容器类容器类源码1. ArrayList2. LinkedList3. Vector二维数组的创建给ArrayList赋值ArrayList和String[]互相转换其他转换比较器内部类静态内部类和普通内部类的比较简单内部类JVM对象的创建Class文件格式常量池内各数据的引用关系类加载过程运行时栈帧结构Java8新特性Lambda表达式(因为可以由编译器推断出来)方法引用流式编程多线程Java中的锁线程安全状态术语和关键字重要小知识求模Spring概念设计思路与作用分层(分层结构)原创 2021-09-21 14:45:24 · 94 阅读 · 0 评论