java单例模式简单吗?
javasingleton说起来很简单,很多初学者也认为它很简单,但是如果你深入思考,你会发现它不是那么简单。
单实例需要考虑多线程并发访问的问题,这将变得更加复杂。如何保证线程安全?常用的方法是使用dcl(doublechecklock)单例。实现代码如下:
这里要特别注意。在实例之前,应该添加volatile修饰符。为什么添加此修饰符?这涉及到cpu底层的一些知识。简言之,当cpu底层执行指令时,它会对不同的指令重新排序。java代码中的一行代码可能是cpu底层的多条指令。如果发生重新排序,则在单例对象的实例化过程中,可能会返回处于半初始化状态的对象。那么由当前线程获得的实例与由其他线程获得的完全初始化的对象是不同的。volatile修饰符可以防止cpu底层对这行代码的相关指令重新排序,直到对象完全初始化,从而确保多个线程访问singleton并返回相同的对象。
因此,看似简单的问题并不简单。
原文标题:java开发 Java单例模式简单吗?,如若转载,请注明出处:https://www.tzjingsheng.com/news/47275.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「豪运号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。