【并发编程】延时初始化
2016-05-19 21:43
253 查看
不安全的延时初始化:
/** * Unsafe lazy initialization
*/@NotThreadSafepublic class UnsafeLazyInitialization { private static Resource resource;
//resource的赋值可能和Resource()域的赋值 顺序重排序 public static Resource getInstance() { if (resource == null) resource = new Resource(); // unsafe publication return resource; } static class Resource { }}线程not-safe说明:
安全的延时初始化/**
* Thread-safe lazy initialization*/
@ThreadSafepublic class SafeLazyInitialization { private static Resource resource; public synchronized static Resource getInstance() { if (resource == null) resource = new Resource(); return resource; } static class Resource { }}安全的延时初始化延时初始化占位符模式--使用static初始化--不需要显示的同步/**
* Lazy initialization holder class idiom
*/
@ThreadSafepublic class ResourceFactory { private static class ResourceHolder { //使用static静态初始化(关键) public static Resource resource = new Resource(); } //当任何一个线程在首次调用getResource()时,都会使ResourceHolder被加载和被初始化 public static Resource getResource() { return ResourceFactory.ResourceHolder.resource; }}
来自为知笔记(Wiz)
/** * Unsafe lazy initialization
*/@NotThreadSafepublic class UnsafeLazyInitialization { private static Resource resource;
//resource的赋值可能和Resource()域的赋值 顺序重排序 public static Resource getInstance() { if (resource == null) resource = new Resource(); // unsafe publication return resource; } static class Resource { }}线程not-safe说明:
安全的延时初始化/**
* Thread-safe lazy initialization*/
@ThreadSafepublic class SafeLazyInitialization { private static Resource resource; public synchronized static Resource getInstance() { if (resource == null) resource = new Resource(); return resource; } static class Resource { }}安全的延时初始化延时初始化占位符模式--使用static初始化--不需要显示的同步/**
* Lazy initialization holder class idiom
*/
@ThreadSafepublic class ResourceFactory { private static class ResourceHolder { //使用static静态初始化(关键) public static Resource resource = new Resource(); } //当任何一个线程在首次调用getResource()时,都会使ResourceHolder被加载和被初始化 public static Resource getResource() { return ResourceFactory.ResourceHolder.resource; }}
来自为知笔记(Wiz)
相关文章推荐
- 使用CSDN-CODE&C-IDE搭建php开发调试环境
- JDK支持的JAXB版本
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- LeetCode Word Break II
- Java数组
- Box2D C++ 教程-环境设置
- <<深入Java虚拟机>>-虚拟机类加载机制-学习笔记
- Java基础整理(一)
- 理解java的三大特性之多态
- Java对象的序列化和反序列化
- 教师兼干部类
- 教师兼干部类
- 教师兼干部类
- 教师兼干部类
- 教师兼干部类
- PHP位运算以及如何引用外部文件
- 基-2 FFT算法的C++程序
- java中的匿名内部类总结
- PHP位运算以及如何引用外部文件
- Java基础——构造器