单例
2015-10-17 10:46
162 查看
单例设计模式
面试问题:
一般采用饿汉式
因为在多线程的时候不会出现问题
*
懒汉式特点 实例的延迟加载
但在多线程时会出现安全隐患
加同步可决解问题
可加同步代码块
同步函数
用双重判断可决解效率问题
同步锁是 该类所属的字节码文件
/*
单例设计模式
面试问题:
一般采用饿汉式
因为在多线程的时候不会出现问题
*
懒汉式特点 实例的延迟加载
但在多线程时会出现安全隐患
加同步可决解问题
可加同步代码块
同步函数
用双重判断可决解效率问题
同步锁是 该类所属的字节码文件
*/
//饿汉式
/*
class Single{
private static final Single s=new Single();
private Single(){
}
public static Single getInstance(){
return s;
}
}
*/
//懒汉式
//在多线程调用时容易出现安全隐患
/*
class Single{
private static Single s=null;
private Single(){
}
public static Single getInstance(){
if(s==null){
s=new Single();
}
return s;
}
}
*/
//决解了安全隐患 但是出现了效率低下的问题
/*
class Single{
private static Single s=null;
private Single(){
}
public static synchronized Single getInstance(){
if(s==null){
s=new Single();
}
return s;
}
}
*/
class Single {
private static Single s = null;
private Single() {
}
public static synchronized Single getInstance() {
if (s == null) {//减少了判断锁的次数
synchronized (Single.class) {
if (s == null) {
s = new Single();
}
}
}
return s;
}
}
public class SingleDemo {
}
面试问题:
一般采用饿汉式
因为在多线程的时候不会出现问题
*
懒汉式特点 实例的延迟加载
但在多线程时会出现安全隐患
加同步可决解问题
可加同步代码块
同步函数
用双重判断可决解效率问题
同步锁是 该类所属的字节码文件
/*
单例设计模式
面试问题:
一般采用饿汉式
因为在多线程的时候不会出现问题
*
懒汉式特点 实例的延迟加载
但在多线程时会出现安全隐患
加同步可决解问题
可加同步代码块
同步函数
用双重判断可决解效率问题
同步锁是 该类所属的字节码文件
*/
//饿汉式
/*
class Single{
private static final Single s=new Single();
private Single(){
}
public static Single getInstance(){
return s;
}
}
*/
//懒汉式
//在多线程调用时容易出现安全隐患
/*
class Single{
private static Single s=null;
private Single(){
}
public static Single getInstance(){
if(s==null){
s=new Single();
}
return s;
}
}
*/
//决解了安全隐患 但是出现了效率低下的问题
/*
class Single{
private static Single s=null;
private Single(){
}
public static synchronized Single getInstance(){
if(s==null){
s=new Single();
}
return s;
}
}
*/
class Single {
private static Single s = null;
private Single() {
}
public static synchronized Single getInstance() {
if (s == null) {//减少了判断锁的次数
synchronized (Single.class) {
if (s == null) {
s = new Single();
}
}
}
return s;
}
}
public class SingleDemo {
}
相关文章推荐
- Java中的Unix时间转换
- 【未完】mongodb安装+副本集搭建+数据导入
- 每个程序员都应该学会的重构方法
- shutdownInput
- 数据结构与算法是什么
- 帮忙看看。。。。
- iOS开发见闻-第1期
- UFT (自定义检查点——票数*价格是否等于总数)
- Android四大组件详解
- jQuery源码分析之jQuery.event.remove方法
- 韩顺平.循序渐进学.java.从入门到精通(二)
- Android开发面试经——6.常见面试官提问Android题1
- labview 移位寄存器、隧道、索引隧道的区别
- 浅谈在JAVA中使用接口引用实现类
- BSD GPL Apache 开源协议
- SQL CHECK 约束 高级教程
- CMU ini 和日本合作的硕士项目, 信息安全
- 正偎翠依红,应记浮生若梦,若一朝情冷,愿君随缘珍重
- iOS本地推送
- MySQL、Oracle、SQL Server查询前n条记录