Java 中多线程下的单例模式
Java 中多线程下的单例模式
Java 中多线程下的单例模式
- package namespace;
- //单例模式--- 饿汉式
- /*
- class Person
- {
- private Person p=new Person ();
- private Person () {}
- public Person GetInstance()
- {
- return p;
- }
- }
- */
- /*
- * 下面是懒汉式,只在在单线种的情况下,而这种情况在多线程的情况下会多现在不安全现在,因为如果有两个线程同时访问到new Person ,那么我就生成两个对象,这样就违反了
- * 单例模式下面一个是在多线
- * */
- /*
- class Person
- {
- private Person person=null;
- private Person () {}
- public Person getInstance()
- {
- if(person==null)
- {
- person =new Person();
- }
- return person;
- }
- }*/
- class Person
- {
- private Person person=null;
- private Person () {}
- public Person getInstance()
- {
- if(person==null)
- {
- synchronized(this)
- {
- if(person==null)
- person =new Person();
- }
- }
- return person ;
- }
- }
- /*
- *
- * 这样在synchronized 线程控制块里面进行多线程的控制,就不会再出现多个线程访问时出现多个对象的情况了.
- * 还有一点就是外面的person ==null 判断是用来提高效率的,不然第一次都要对锁进行判断,消耗浓资源
- * 这样可以有次的提高效率
- * */
- public class Single {
- public static void main(String args[])
- {
- System.out.println("this is java");
- }
- }
- /*
- * 单例模式就是在内存中想只能存在一个对象,而不允许再实例化其他的对象
- *
- * */
评论暂时关闭