一、枚举Enum
1.1 简介
| 1.概念:枚举就是表示一些固定的值(常量) 使用枚举项表示这些固定的值 每一个枚举项 都是一个对象 |
| 2.定义枚举类的语法: 访问修饰符 enum 枚举类的名称{ 枚举项 }例如:public enum Color { } |
| 3.特点: |
| A.枚举中的每一个项都是一个对象 |
| B.所有的枚举类的父类都是Enum |
| C.枚举项必须定义在枚举类的第一行 |
| D.枚举类中是可以有成员变量 |
| E.枚举项中只能有私有的构造方法 默认也是私有的构造方法 |
| F.枚举项可以直接通过枚举类.枚举项来进行访问 |
| G.枚举类中可以有抽象方法 但是所有的枚举项必须实现这个抽象方法 |
1.2 常用方法
方法名称 |
方法摘要 |
ordinal() |
返回枚举常量的序数(它在枚举声明中的位置,其中初始常量序数为零)。 |
compareTo(E o) |
比较此枚举与指定对象的顺序。 |
[valueOf](../../java/lang/Enum.html#valueOf(java.lang.Class, java.lang.String))(Class enumType, String name) |
返回带指定名称的指定枚举类型的枚举常量。 |
name() |
返回此枚举常量的名称,在其枚举声明中对其进行声明。 |
二、线程生命周期
2.1 简介
| 1.生命周期 线程从出生到死亡的几种状态 线程的状态是固定的几种 所有可以使用枚举项来进行表示 例如:出生 ==>婴儿 ==>少年 ==>青年 ==>中年 ==>老年 ==>死亡 |
| 2.展示状态 |
| 3.获取线程状态 public Thread.State getState() ==>返回该线程的状态 |

三、 线程池
3.1 简介
| 1.常量池:用于存储字符串的字面值 便于管理维护字符串 |
| 2.线程池:用于管理与维护线程 |
3.2 步骤
| A.通过线程池工具类 获取线程值对象 Executors(工具类) |
| B.创建一个任务对象 Callable实现类 或者是Runnable的实现类 |
| C.将任务对象提交到线程池中 |
| D.执行线程操作 |
3.2.1 获取线程池
方法名称 |
方法描述 |
public static ExecutorService newSingleThreadExecutor() |
获取线程池(线程池中只有一个线程) |
public static ExecutorService newFixedThreadPool(int nThreads) |
创建一个可重用固定线程数的线程池 |
3.2.2 提交任务对象的方法
方法名称 |
方法描述 |
Future<?> submit(Runnable task) |
提交一个 Runnable 任务用于执行 |
Future submit(Callable task) |
提交一个返回值的任务用于执行 |
3.2.3 关闭线程池
方法名称 |
方法描述 |
void shutdown() |
启动一次顺序关闭,执行以前提交的任务,但不接受新任务 |
List shutdownNow() |
关闭线程池(停止所有的任务) |
四 单例设计模式
4.1 简介
| 1.单例设计模式:有且仅实例化一个对象 |
| 2.保证实例化一个对象 |
| A.私有的属性 |
| B.私有的构造 ==>只能本类进行访问 |
| C.公有的方法 ==> 实例化对象 |
| 3.分类: 饿汉模式 懒汉模式 双重锁模式 内部类 枚举 |
| 4.使用场景 |
| A.加载配置文件 |
| B.工具类的实现 |
| C.spring 容器管理对象 |
| package com.xxx.study01; |
| |
| |
| |
| |
| |
| |
| |
| |
| public enum EnumSingleton { |
| INSTANCE; |
| |
| public EnumSingleton getInstance() { |
| return INSTANCE; |
| } |
| } |
| |
4.2 饿汉式
| 优点:没有锁的机制 效率比较高 |
| 缺点:项目启动的时候 会出现卡顿的现象 |
| package com.xxx.study01; |
| |
| |
| |
| |
| |
| |
| |
| |
| public class HungrySingleton { |
| |
| private HungrySingleton() { |
| } |
| |
| |
| private final static HungrySingleton HUNGRY_SINGLETON = new HungrySingleton(); |
| |
| public static HungrySingleton getInstance() { |
| return HUNGRY_SINGLETON; |
| } |
| } |
| |
4.3 DCL懒汉式
| 优点:懒加载 随用随加载 |
| 缺点:在多线程中是不安全 |
4.4 双重锁-单例设计模式
| package com.xxx.study01; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public class LazySingleton { |
| private LazySingleton() { |
| |
| } |
| |
| private volatile static LazySingleton lazySingleton; |
| |
| |
| public static LazySingleton getInstance() { |
| if (lazySingleton == null) { |
| synchronized (LazySingleton.class) { |
| if (lazySingleton == null) { |
| lazySingleton = new LazySingleton(); |
| |
| } |
| } |
| } |
| return lazySingleton; |
| } |
| } |
| |
4.5 内部类-单例设计模式
| package com.xxx; |
| public class Holer { |
| private Holer (){ |
| } |
| static class HolderSingin{ |
| private static final Holer h = new Holer(); |
| } |
| public static Holer getInstance() { |
| return HolderSingin.h; |
| } |
| } |
| package com.xxx; |
| public class Test01 { |
| public static void main(String[] args) { |
| Holer h1 = Holer.getInstance(); |
| Holer h2 = Holer.getInstance(); |
| System.out.println(h1==h2); |
| } |
| } |
本文作者:Ritchie里其
本文链接:https://www.cnblogs.com/wang-zeyu/p/16823168.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步