网站规划的原则有哪些内容,做我的奴隶腾讯网站,网站后台不能粘贴文章,wordpress浏览统计目录
1.单例设计模式的概念
2.实现方法#xff1a;
1.饿汉式
2.懒汉式
3.区分饿汉式和懒汉式#xff1a;
3.单例模式的双重校验线程安全形式
1.线程安全问题的解决方法
1.1 synchronized关键字#xff1a;
1.2 volatile关键字#xff1a; 保证变量可见性#xff…目录
1.单例设计模式的概念
2.实现方法
1.饿汉式
2.懒汉式
3.区分饿汉式和懒汉式
3.单例模式的双重校验线程安全形式
1.线程安全问题的解决方法
1.1 synchronized关键字
1.2 volatile关键字 保证变量可见性不保证原子性 禁止指令的重排序
2.线程安全的单例模式的代码实现
PS.什么是指令的重排序 1.单例设计模式的概念 单例只能存在一个对象实例 设计模式大量实践中总结和理论化后优选的代码结构编码风格。就像是一些固定套路
2.实现方法
1.饿汉式 1.私有化类的构造器 2.内部创建类的私有静态对象 3.提供类的对象的静态get方法
#饿汉式
public class singleTonHungry {//1.私有化类的构造器private singleTonHungry(){}//2.内部创建类的对象private static singleTonHungry singleTonHungry new singleTonHungry();//3.提供静态方法返回private static singleTonHungry getSingleTonHungry(){return singleTonHungry;}}
2.懒汉式 1.私有化类的构造器 2.声明当前类的对象null 3.声明一个public、static的方法返回当前类对象的方法
#懒汉式
public class singleTonLazy {//1.私有化类的构造器private singleTonLazy(){}//2.创建对象私有化private static singleTonLazy singleTonInstance;//3.静态方法返回public static singleTonLazy getInstance(){if (null singleTonInstance){singleTonInstance new singleTonLazy();}return singleTonInstance;}}
3.区分饿汉式和懒汉式 1.懒汉式好处延迟对象创建 坏处线程不安全到多线程内容时再修改。 2.饿汉式 好处是线程安全的 坏处:对象在内存中加载时间过长
3.单例模式的双重校验线程安全形式
1.线程安全问题的解决方法
1.1 synchronized关键字 synchronized译为使同步 synchronized(同步监视器){需要被同步代码} 同步监视器俗称锁任何类的对象都可以充当锁
1.2 volatile关键字 volatile译为不稳定的 保证变量可见性不保证原子性 使用volatile修饰的变量是共享且不稳定的使用时从主存中读取改变量 禁止指令的重排序 在对volatile修饰的变量进行读写操作时能够防止JVM指令重排序
2.线程安全的单例模式的代码实现
public class singleTon{private singleTon(){}//为实例加上volatile关键字private volatile static singleTon singleTonInstance;public static singleTon getSingleTonInstance(){if(null singleTonInstance){//加上synchronize锁synchronized(singleTon.class){singleTonInstance new singleTon();}}return singleTonInstance; }
} PS.什么是指令的重排序
2.1 指令 计算机执行操作的命令比如算术运算指令、程序流程控制指令、处理器控制指令
2.2 重排序 CPU为了最大性能利用率只要能够保证程序最终结果和顺序化执行下结果相等就可以更改指令执行顺序
指令的排序与代码的关系比如
int i 8080
这行代码需要执行两条指令 加载常量8080 将8080赋值给变量i