当前位置: 首页 > news >正文

淘宝客网站返利程序郴州建设工程集团招聘信息网站

淘宝客网站返利程序,郴州建设工程集团招聘信息网站,新手怎么做网站内容维护,2023年最新科技新闻摘抄JAVA种有两种保证线程安全的方式#xff0c;分别叫懒汉式Lazy Initialization和饿汉式Eager Initialization#xff0c;以下是他们的区别#xff1a; 线程安全性#xff1a; 懒汉式本身是非线程安全的#xff0c;因为多个线程可能同时检查实例是否为null#xff0c;并尝…JAVA种有两种保证线程安全的方式分别叫懒汉式Lazy Initialization和饿汉式Eager Initialization以下是他们的区别 线程安全性 懒汉式本身是非线程安全的因为多个线程可能同时检查实例是否为null并尝试同时创建实例会导致出现多个实例。为了解决这个问题需要额外的同步机制如双重检查锁定double-checked locking或静态内部类等方式。 而饿汉式最开始就static和final了天生就是线程安全的。 实例创建时机不同 懒汉式在类被创建时不立即创建实例而是在第一次调用 类名.getInstance() 方法时才创建实例实现了延迟加载(非线程安全)。 饿汉式直接在最开始就static final SingletonEager instance new SingletonEager()直接创建完毕了(自带安全属性)。 资源加载和性能不同 懒汉式(慢)延迟了实例的创建只有在真正需要使用时才会进行初始化因此可以节省资源。但在第一次调用 getInstance() 方法时由于需要创建实例可能会有一定的性能延迟。 饿汉式(快浪费内存)对象在加载时已经创建因此无论是否适用单例对象都会占用一定内存。但是由于对象已经提前初始化第一次调用getInstance方法速度会更快。 饿汉式本身就是线程安全的 饿汉式Eager Initialization开始就直接创建不调用也存在占内存调用跑起来快自带线程安全属性。 饿汉式举例 public class EagerSingleton { private static final EagerSingleton INSTANCE new EagerSingleton(); private EagerSingleton() { // 私有构造函数 } public static EagerSingleton getInstance() { return INSTANCE; } }使用举例 package ThreadPool;public class Test {public static void main(String[] args) {EagerSingleton e1 EagerSingleton.getInstance();EagerSingleton e2 EagerSingleton.getInstance();System.out.println(e1e2);}}class EagerSingleton{private EagerSingleton() {}private static final EagerSingleton instance new EagerSingleton();public static EagerSingleton getInstance(){return instance;} }运行结果 true懒汉式 懒汉式Lazy Initialization 下面是一个非线程安全的一般懒汉式示例不建议使用除非有额外的同步机制 public class LazySingleton { private static LazySingleton instance; private LazySingleton() { // 私有构造函数 } public static LazySingleton getInstance() { if (instance null) { instance new LazySingleton(); } return instance; } }线程安全的懒汉式示例使用双重检查锁定 第一次判断if (instance null) 再进行下面的线程synchronized, 如果实例已经存在直接都不用管线程synchronized那些程序块直接return输出了。 public class ThreadSafeLazySingleton { private static volatile ThreadSafeLazySingleton instance; private ThreadSafeLazySingleton() { // 私有构造函数 } public static ThreadSafeLazySingleton getInstance() { if (instance null) { // 第一次检查实例是否存在 synchronized (ThreadSafeLazySingleton.class) { if (instance null) { // 第二次检查实例是否存在 instance new ThreadSafeLazySingleton(); } } } return instance; } }补充知识点 volatile是一个关键字用于修饰变量。当一个变量被声明为volatile时它意味着这个变量在多线程环境下是可见的和有序的。这有助于确保线程安全但它并不保证复合操作的原子性。例如自增操作实际上包括读取、增加和写入三个步骤如果多个线程同时对一个volatile变量进行自增操作那么结果可能会不正确。在下面的例子中volatile被用在在Bank instance的定义中。 示例2构建一个银行单例使用三个线程分别调用它保证线程安全条件下(三个线程调用的是同一个银行instance)输出“线程名字 My Private Bank is building up! ” package ThreadPool;public class Test3 {public static void main(String[] args) {//创建三个BankThread对象BankThread b1 new BankThread();BankThread b2 new BankThread();BankThread b3 new BankThread();//分别启动这三个线程因为Bank类是单例的因此所有线程都将获取到同一个Bank对象实例b1.start();b2.start();b3.start();}}//一个专门构建的可以调用Bank类的Thread类 class BankThread extends Thread{Overridepublic void run() {Bank bank Bank.getInstance();bank.PrintBank();} }//构建Bank类实现了懒汉单例模式 //两层if(instance null)和 synchronized (Bank.class)确保线程安全 class Bank{private static volatile Bank instance;private Bank() {}static Bank getInstance(){if(instance null){synchronized (Bank.class){if(instance null){instance new Bank();}}}return instance;}public void PrintBank(){System.out.println(Thread.currentThread().getName() My Private Bank is building up! );} } 运行输出 Thread-0 My Private Bank is building up! Thread-1 My Private Bank is building up! Thread-2 My Private Bank is building up! Process finished with exit code 0 饿汉式和懒汉式的主要区别在于实例的创建时机和线程安全性。饿汉式在类加载时即创建实例线程安全且性能较高首次调用速度快但可能浪费资源即使实例从未被使用。懒汉式则延迟了实例的创建节省了资源但需要在多线程环境下采取额外的同步措施来保证线程安全。在实际应用中应根据具体需求选择适合的实现方式。
http://www.w-s-a.com/news/495512/

相关文章:

  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子
  • 杭州网站建设招聘网长沙网络销售公司
  • 网站制作一年多少钱免费做电子章网站
  • 信誉好的营销网站建设徐州市铜山新区建设局网站
  • 建行网站关于我们山西seo和网络推广
  • 1m带宽做网站怎么样深圳网站建设制作开发公司
  • 网站建设 服务内容 费用郴州网站建设公司哪里有
  • 网站关键词重要性育才网站建设
  • 网络安全形势下怎么建设学校网站wordpress最新主题下载
  • 自己建设网站需要什么条件.gs域名做网站怎么样