标签:Holer 模式 枚举 线程 单例 static public
一、枚举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() ==>返回该线程的状态
![image](/i/l/?n=22&i=blog/2968215/202210/2968215-20221024215148529-286170463.png)
三、 线程池
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 容器管理对象
4.2 饿汉式
优点:没有锁的机制 效率比较高
缺点:项目启动的时候 会出现卡顿的现象
4.3 懒汉式
优点:懒加载 随用随加载
缺点:在多线程中是不安全
4.4 双重锁-单例设计模式
优点:多线程安全
缺点:效率低
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);
}
}
标签:Holer,
模式,
枚举,
线程,
单例,
static,
public
From: https://www.cnblogs.com/wyzel/p/16823168.html