首页 > 其他分享 >枚举、单例模式

枚举、单例模式

时间:2022-10-24 22:00:36浏览次数:43  
标签: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

三、 线程池

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

相关文章

  • 基于工厂模式和策略模式改造支付系统
    1.vo@Data@AllArgsConstructor@NoArgsConstructor@BuilderpublicclassPayVO{/***支付类型:egsendwyre*/privateStringpayType;/***端......
  • 设计模式总览
    设计模式是什么?在软件工程中,设计模式(DesignPattern)是对软件设计中常见问题的典型解决方案。它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题。......
  • JavaScript 设计模式之策略模式
    什么是设计模式?为什么需要学习设计模式?学习设计模式的目的是:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写真正工程化;设计模式是软件工......
  • 浅析 Dapr 里的云计算设计模式
    Dapr实际上是把分布式系统与微服务架构实践的挑战以及k8s这三个主题的全方位的设计组合,特别是Kubernetes设计模式一书作者BilginIbryam提出的Multi......
  • c枚举类型enum用法(java 枚举类型enum用法)
    C中的枚举类型有什么特点呢?我们利用C中的枚举类型定义了在扫描程序中的记号;为了避免涉及到特定实现语言(C)中表示记号的细节,就使用了正则表达式本身来表示记号如何使用java......
  • 单例模式
    单例模式 饿汉式由于对象在类里面才能被创建,而且是静态的,所以,被创建的对象始终都是一个,由于在类装载时就被完成了实例化,所以没有线程安全问题,如果没有使用这个实例,会造......
  • 观察者模式
    观察者模式观察者模式(ObserverDesignPattern):在对象之间定义一个一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会得到通知并自动更新。观察者模式通用代码/......
  • 直播电商平台开发,设计模式单例模式
    直播电商平台开发,设计模式单例模式1.说明单例即只有一个实例,比如说配置、日志、连接池等,可以避免多个实例带来的多余的资源开销,并且在多线程环境下保证数据安全 2.类......
  • 标准SPI协议应用笔记:四种模式区分(CPOL/CPHA)
    前言标准的四线SPI包括CS、MISO、MOSI、CLK四根线,同时根据时钟线的相位和极性可以分为四种模式CPOL代表时钟的极性Polarity,即时钟线有效时(active)和无效时(inacitve)的电平......
  • golang隧道模式示例
    packagemainimport("net/url""net/http""bytes""fmt""io/ioutil")constProxyServer="ip.hahado.cn:3......