饿汉模式和懒汉模式的多线程访问问题
2014-12-06 15:35
162 查看
/** * 饿汉模式与懒汉模式的使用实例 * 1.饿汉模式不存在线程安全问题,因为单例对象在对象创建时候,已经存在 * 2.懒汉模式存在线程安全问题,线程访问的时候可能创建多个单例对象 * 3.推荐用饿汉模式进行多线程的访问,不存在线程安全问题 */ public class SingleThreadAccess { public static void main(String[] args) { AccessSingle single = new AccessSingle(); Thread t1 = new Thread(single); Thread t2 = new Thread(single); t1.start(); t2.start(); } } /** * 定义饿汉单例模式 */ class MyPerson{ int age = 34; String name = "tom"; } class Demo { private static final MyPerson person = new MyPerson(); public static MyPerson getInstance(){ return person; } } /** * 定义懒汉单例模式 */ class Demo2{ private static MyPerson person; public static MyPerson getInstance(){ //加入if判断,如果单例对象已经存在,那么直接返回该对象,而不用进行锁定判断 if(person == null){ synchronized (Demo2.class) { if(person==null){ person = new MyPerson(); } } } return person; } } class AccessSingle implements Runnable{ @Override public void run() { MyPerson person = Demo2.getInstance();//懒汉单例模式 MyPerson person2 = Demo.getInstance();//饿汉单例模式 System.out.println(Thread.currentThread().getName()+"======"+person); System.out.println(Thread.currentThread().getName()+"======"+person2); } }
相关文章推荐
- 单例模式,多线程同时访问一个实例对象问题的处理,加lock .
- 多线程-单例设计模式懒汉 饿汉
- GOOD单例模式,多线程同时访问一个实例对象问题的处理,加lock
- 解决多线程下单例模式中"懒汉模式"(延迟加载)的问题
- 关于多线程在简单的懒汉模式下线程安全问题的解决
- C++中的单例模式(懒汉模式、饿汉模式及线程安全问题)
- servlet单实例多线程模式问题
- 【转】c#中使用多线程访问winform中控件的若干问题
- c#中使用多线程访问winform中控件的问题
- C#中使用多线程访问Winform问题解决方案
- 匿名方法解决多线程访问控件的问题
- C#中使用多线程访问Winform问题解决方案
- 单例模式之饿汉懒汉模式
- 多线程多进程数据库访问应注意问题
- 线程间操作无效:从不是创建控件“XX”的线程访问它,多线程问题
- WinCE5.0移动平台开发笔记(c#中使用多线程访问winform中控件的若干问题(zt))
- c#中使用多线程访问 winform中控件的若干问题
- c#中使用多线程访问winform中控件的若干问题
- 哲学家进餐问题-状态模式 + 多线程
- c#中使用多线程访问winform中控件的若干问题