多线程学习笔记二

it2022-05-05  184

1.单例模式的三种实现

单例模式:保证类在内存中只存在一个对象

1.1. 饿汉式

以空间换时间例:Runtime类实现了饿汉式的单例模式 class Singleton01{ //私有化构造函数,保证不能通过构造函数创建出实例 private Singleton01() { } //创建私有的本例对象 private static Singleton01 s = new Singleton01(); //提供一个外部调用方法 public static Singleton01 getInstance(){ return s; } }

1.2.懒汉式

不推荐使用,因为在多线程的开发情况下容易创建多个对象以时间换空间面试题:单例的延迟加载模式即为懒汉式 class Singleton02{ //私有化构造方法 private Singleton02(){ } //声明一个私有化的静态变量 private static Singleton02 s; //提供一个外部调用方法 public static Singleton02 getInstance(){ //判断为空之后创建对象 if(s==null){ //在多线程的应用中,假如一个线程进入之后在创建对象之后被抢夺资源,容易使另一个线程也进入,有可能创建多个对象 //创建多个对象,便不再是单例模式 s = new Singleton02(); } return s; } }

1.3 单例模式的第三种实现

通过类名.变量调用 class Singleton03{ //私有化构造方法 private Singleton03(){ } //创建一个不可修改的静态变量并进行实例化,保证在内存中只存在一个本例对象 public static final Singleton03 s = new Singleton03(); }

1.4 Runtime类 单例模式饿汉式的实例

源码分析 public class Runtime { ..... //创建一个私有的本例对象 private static Runtime currentRuntime = new Runtime(); //提供一个外部调用的方法 public static Runtime getRuntime() { return currentRuntime; } //私有化构造函数 private Runtime() {} ...... } public class Runtime_02 { public static void main(String[] args) throws IOException { Runtime runtime = Runtime.getRuntime(); //设置执行300秒后关机的命令 // runtime.exec("shutdown -s -t 300"); //exex:在指定环境执行指定的命令 //设置取消关机命令 runtime.exec("shutdown -a"); //确保两次命令执行的是同一对象使用单例模式 } }

最新回复(0)