多线程时的单例
2016-02-17 16:25
323 查看
//方法一
class Singleton
{
private static Singleton instace;
private static readyonly object syncRoot=new object(); //程序运行时创建一个静态只读的进程辅助对象
private Singleton() //私有构造函数
{}
public static Singleton GetInstace()
{
if(instace ==null)
{
lock(syncRoot) //lock确保党一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入则会一直等待,直到该对象被释放
{
if(instace ==null)
{
instance=new Singleton();
}
}
}
return instance;
}
}
//方法二
public sealed class Singlon
{
publiic static readyonly Singlon instance=new Singlon();
private Singlon(){}
public static Singlon GetInstance()
{ return instance};
}
class Singleton
{
private static Singleton instace;
private static readyonly object syncRoot=new object(); //程序运行时创建一个静态只读的进程辅助对象
private Singleton() //私有构造函数
{}
public static Singleton GetInstace()
{
if(instace ==null)
{
lock(syncRoot) //lock确保党一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入则会一直等待,直到该对象被释放
{
if(instace ==null)
{
instance=new Singleton();
}
}
}
return instance;
}
}
//方法二
public sealed class Singlon
{
publiic static readyonly Singlon instance=new Singlon();
private Singlon(){}
public static Singlon GetInstance()
{ return instance};
}
相关文章推荐
- uCOS-II中的任务切换-图解多种任务调度时机与问题
- 10个最佳最新的网页设计工具
- java方法可变参数的写法
- bzoj 1030 [JSOI2007]文本生成器(AC自动机+DP)
- ANSYS Customization Tools (ACT) 17.0 1CD
- mysql使用JTA实例
- Hibernate的核心接口与类
- 应用Druid监控SQL语句的执行情况
- PHP快速排序
- UIImagePickerController 拍照
- spring mvc 注解@Controller @RequestMapping @Resource的详细例子
- 【iOS-Android开发对照】之 数据存储
- Oracle RAC环境的日志体系
- Spark使用CombineTextInputFormat缓解小文件过多导致Task数目过多的问题
- MySQL 5.6 my.cnf 参数说明(转)
- MS MQ
- JavaScript多物体运动一
- ES6个人学习整理(九)——Module
- Joda Time,企业级应用程序 时间处理必备时间库
- Joda Time,企业级应用程序 时间处理必备时间库