Java
chenrenxiang
缓慢进步
展开
-
JVM垃圾回收机制
文章目录第一章:垃圾回收简介1.1 什么是自动垃圾回收1.2 自动垃圾回收基本流程第一步:标记 Marking第二步a:正常删除 Normal Deletion第二步b:压缩删除 Deletion with Compacting1.3 分代垃圾回收 Genrational Garbage Collection为什么使用分代垃圾回收?JVM分代第二章:分代垃圾回收过程第三章:垃圾收集器配置3.1 堆相关的参数配置3.2 串行垃圾回收器 The Serial GC3.2 并行垃圾回收器 The Parallel原创 2020-12-29 16:45:13 · 210 阅读 · 0 评论 -
Java虚拟机简介
文章目录@[toc]JVM是什么JVM架构概览类加载子系统 (ClassLoader Subsystem)加载 Loading连接 Linking初始化 Intialization运行时数据区 Runtime Data Area执行引擎 Execution Engine本地编程接口 Java Native Interface本地方法库 Native Method Libraries最近在网上看了不少介绍Java虚拟机(JVM)的文章,但总觉得看完之后一知半解。所以决定阅读官方文档,按照自己的理解来写几篇原创 2020-12-27 14:33:49 · 351 阅读 · 4 评论 -
Effective Java: 第三章 类和接口
文章目录Item1: 使类和成员的可访问性最小化1.1 顶层类和接口1.2 成员(域、方法、嵌套类和嵌套接口)Item2: 公有类不应该暴露可变的域Item3: 使可变性最小化Item4: 复合优先于继承继承的缺点复合Item5: 要么设计继承并提供文档,要么禁止继承编写为了继承而设计的类禁止子类化Item6: 接口优先于抽象类现有的类可以很容易被更新,以实现新的接口接口是定义Mixin(混合类型)的理想选择接口允许构造非层次结构的类型框架Item7: 为后代设计接口Item8: 接口只用于定义类型Item原创 2020-07-21 21:25:49 · 273 阅读 · 0 评论 -
Effective Java: 第二章 Object类的方法
文章目录Item1: 覆盖equals时请遵守通用约定无需覆盖的情况覆盖的规范实现高质量的equals方法Item2: 覆盖equals方法时总要覆盖hashCode方法糟糕的hasCode方法具体实现更多的优化注意事项Item3: 始终要覆盖toString方法Item4: 谨慎地覆盖clone方法基本实现深度拷贝拷贝构造器Item5: 考虑实现Comparable接口尽管Object是一个具体类,但设计它主要是为了扩展。它的所有非final方法(equals、hashCode、toString、clo原创 2020-07-05 22:38:52 · 212 阅读 · 0 评论 -
Effective Java: 第一章 创建和销毁对象
本章关注于创建与销毁对象:何时并如何创建对象,何时并如何避免创建对象,如何确保对象适时适当地被销毁,并且如何在销毁对象之前做好清理工作。Item 1:考虑使用静态工厂方法替代构造方法优点1:静态工厂方法拥有名字传统的构造方法名字必须和类名一致,如果可以接受不同个数的参数来初始化,那么必须声明多个构造方法且构造方法的名字一样,只能依靠参数来区分要创建的对象。而使用静态工厂方法,构造对象时可以为接受不同参数的对象起不同且容易区分的适当的名字。优点2:静态工厂方法不用每次调用都创建一个新的对象例.原创 2020-06-30 18:30:21 · 282 阅读 · 0 评论 -
Java线程同步
[TOC]为什么要同步呢?因为一个资源可能同时被多个线程任务修改或访问,这样的话就会造成混乱。为了避免这种混乱,让该资源一次只能被一个线程修改/访问,这就叫做线程同步。 1. Synchronized 关键字被 synchronized 关键字标记的代码块称为同步块,在任意给定的时间只允许一个线程执行同步块。synchronized关键字有三种用法:用来标记非static方法用来标...原创 2019-08-12 14:56:10 · 238 阅读 · 0 评论 -
Java线程池
文章目录1. 创建线程池常用的方法2. 举例比较线程池就是多个可执行任务的线程的集合,在执行大量线程任务的时候,由于线程池里的线程可以复用,因而可以减少新建和调用线程的次数,从而提高性能。此外,使用线程池让你无需管理线程的生命周期,它让你在利用线程优势的同时,只需专注于任务的执行,而无需关心线程机制。1. 创建线程池常用的方法介绍几个常用的创建线程池的方法(使用 Executors类的...原创 2019-08-12 14:49:43 · 176 阅读 · 0 评论 -
Thread类方法介绍
1. sleepThread.sleep(long millis)值不能为负值,否则会抛 IllegalArgumentException 异常Thread.sleep(long millis, int nanos)可以传入纳米时长,更精准控制时间,nanos取值范围为(0-999999)调用Thread.sleep()方法会使线程调度器把当前线程至于TIMED_WAITING状态...原创 2019-08-12 14:33:17 · 481 阅读 · 0 评论 -
创建线程任务
文章目录@[toc]1. 创建线程1.1 通过Runnable接口创建线程1.2 通过Thread类创建线程1.3 实例说明2. 返回结果的线程任务 Callable 和 Future2.1 Callable接口2.1.1 Callable与Runnable的区别2.1.2 实现Callable接口的例子2.2 Future接口2.2.1 FutureTask3. 定时线程任务 Timer 和 T...原创 2019-08-12 14:28:50 · 404 阅读 · 0 评论 -
了解Java注解
此文将介绍注解的三个方面:文章目录1. Java内建的注解2. 自定义注解3. 反射注解1. Java内建的注解Java有三个内建的注解@Override - 当重写父类方法的时候,我们使用这个注解来通知编译器我们正在重写这个方法。当父类的这个方法被移除或改变的时候,编译器会提示一个错误信息。@Deprecated - 这个注解用来告诉编译器某个方法已经被废弃。当某个地方调用此方...原创 2019-01-25 10:51:40 · 232 阅读 · 0 评论 -
了解Java反射
文章目录@[toc]1. 类反射1.1 Class 对象1.2 类名称1.3 修饰符1.4 包信息1.5 父类1.6 实现的接口1.7 构造方法1.8 方法1.9 字段1.10 注解2. 构造方法(Constructor)2.1 获取Constructor对象2.2 构造参数2.3 使用Constructor来实例化对象3. 字段(Field)3.1 获取字段对象3.2 字段名3.3 字段类型3....原创 2019-01-23 18:00:29 · 215 阅读 · 0 评论 -
Java多线程
文章目录0. 线程(Thread)介绍0.1 使用多线程的优势0.2 多任务处理0.3 进程和线程关系图1. 创建线程任务2. 线程的生命周期3. 线程调度(Thread Scheduling)3.1 优先调度(preemptive scheduling)3.2 时间片(Time-Slicing)4. Thread类方法介绍5. 线程池(Thread Pool)6. 线程同步0. 线程(Thr...原创 2019-02-02 17:07:28 · 205 阅读 · 0 评论