Multithreaded singleton - Design Patterns 学习笔记(5)
来源:互联网 发布:阿里云虚拟机怎么打开 编辑:程序博客网 时间:2024/05/22 08:28
在多线程程序中,必须要考虑进程间共享和互斥的问题。 如果恰巧有两个线程访问Singleton类,并做修改的话,会导致出现bug。
解决的方法就是给对象加锁:
Java:
//: Configuration.java
/** *//**
* Singleton of Design Patterns
* @author http://blog.csdn.net/nyzhl/
*/
public class Configuration ...{
private static Configuration _instance = null;
//私有构造函数 不能在类外部生成对象
private Configuration() ...{}
public static synchronized Configuration getInstance() ...{
if(_instance == null)
_instance = new Configuration();
return _instance;
}
/**//*
methods ...
*/
}
///:~
/** *//**
* Singleton of Design Patterns
* @author http://blog.csdn.net/nyzhl/
*/
public class Configuration ...{
private static Configuration _instance = null;
//私有构造函数 不能在类外部生成对象
private Configuration() ...{}
public static synchronized Configuration getInstance() ...{
if(_instance == null)
_instance = new Configuration();
return _instance;
}
/**//*
methods ...
*/
}
///:~
C#:
using System;
public sealed class Singleton
...{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton() ...{}
public static Singleton Instance
...{
get
...{
if (instance == null)
...{
lock (syncRoot)
...{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
public sealed class Singleton
...{
private static volatile Singleton instance;
private static object syncRoot = new Object();
private Singleton() ...{}
public static Singleton Instance
...{
get
...{
if (instance == null)
...{
lock (syncRoot)
...{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
- Multithreaded singleton - Design Patterns 学习笔记(5)
- Singleton - Design Patterns学习笔记(1)
- 大卫的Design Patterns学习笔记05:Singleton
- 大卫的DESIGN PATTERNS学习笔记05:SINGLETON
- DESIGN PATTERNS学习笔记
- 学习Design Patterns笔记
- Factory - Design Patterns学习笔记(2)
- Design Patterns -- Singleton
- 《Head First Design Patterns》笔记五:单件模式(Singleton Pattern)
- Head First Design Patterns 阅读笔记之五: Singleton Pattern
- Design Patterns in Java - Singleton
- Observer (Java) - Design Patterns学习笔记(3)
- Observer (C# Delegate - Event) - Design Patterns学习笔记(4)
- Design Pattern学习笔记之组合模式(Compound Patterns)
- Design Pattern学习笔记之状态机模式(State Patterns)
- Multithreaded Singleton
- Design Patterns学习笔记:Decorator装饰模式
- Design Patterns学习笔记:Strategy策略模式
- 半小时教你学会正则表达式
- 键盘上所有的键对应的值
- 多语言中的自定义快捷键实现
- iText的简单应用-表格
- 程序员面试宝典---2.1 简历注意事项
- Multithreaded singleton - Design Patterns 学习笔记(5)
- 程序员面试宝典---3.1 笔试
- sql server 日期时间函数
- 如何编译WinPcap
- 程序员面试宝典---3.2 电话面试
- 程序员面试宝典---3.3 面试
- 下一周每天有30分钟空闲时间的话(9)
- MSF基本原则概述
- Java包转换为exe