Linux教程網
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");
- }
- }
- /*
- * 單例模式就是在內存中想只能存在一個對象,而不允許再實例化其他的對象
- *
- * */
Copyright ©
Linux教程網 All Rights Reserved