生活随笔
收集整理的這篇文章主要介紹了
JavaSE各阶段练习题----多线程-垃圾回收
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1獨立完成三種單例模式的代碼
?
package Single; /* 餓漢式 ?*/ public class Demo01 { ????public static void main(String[] args) { ????????HungrySingle h1 = HungrySingle. getInstance (); ????????HungrySingle h2 = HungrySingle. getInstance (); ????????System. out .println(h1 == h2); //true ????} } class HungrySingle{ ????private static HungrySingle INT = new HungrySingle(); ????private HungrySingle(){} ????public static HungrySingle getInstance(){ ????????return INT ; ????} }
?
package Single; public class Demo02 { ????public static void main(String[] args) { ????????LazySingle l1 = LazySingle. getIntance (); ????????LazySingle l2 = LazySingle. getIntance (); ????????System. out .println(l1 == l2); //true ????} } class LazySingle{ ????private static LazySingle LAZ = null ; ????private LazySingle(){} ????public static LazySingle getIntance(){ ????????if ( LAZ == null ){ ????????????LAZ = new LazySingle(); ? // 當真正需要這個類的時候在創(chuàng)建這個類 ????????} ????????return LAZ ; ????} }
?
package Single; public class Demo02_p { ????public static void main(String[] args) { ????????LazySingle l1 = LazySingle. getIntance (); ????????LazySingle l2 = LazySingle. getIntance (); ????????System. out .println(l1 == l2); //true ????} } class LazySingle2{ ????private static LazySingle2 LAZ = null ; ????private LazySingle2(){} ????// 懶漢式的線程不安全問題解決 ????public static synchronized LazySingle2 getIntance(){ ????????if ( LAZ == null ){ ????????????LAZ = new LazySingle2(); ? // 當真正需要這個類的時候在創(chuàng)建這個類 ????????} ????????return LAZ ; ????} }
?
package Single; public class Demo03 { ????public static void main(String[] args) { ????????SingletonOld so1 = SingletonOld. so ; ????????System. out .println(so1); ????????SingletonOld so2 = SingletonOld. so ; ????????System. out .println(so2); ????????System. out .println(so1 == so2); //true // ???SingletonOld.so = null; ????} } class SingletonOld { ????/* ????1. 私有化構(gòu)造函數(shù) ????2. 將對象實例化為 final ?????*/ ????private SingletonOld() { ????} ????public static final SingletonOld so = new SingletonOld(); }
?
?
2 深入理解線程協(xié)作和垃圾回收機制
線程協(xié)作:不同線程執(zhí)行不同的任務(wù),如果這些任務(wù)有某種聯(lián)系,那么線程之間必須能通過?通信,協(xié)調(diào)完成工作。根據(jù)生產(chǎn)者與消費者去理解:
?
垃圾回收機制:
所謂的垃圾回收機制,即在java中使用new關(guān)鍵字創(chuàng)建對象時,都會在堆內(nèi)存中為之分配一塊內(nèi)存,用于保護對象,當此內(nèi)存不在被任何引用變量引用時,這塊內(nèi)存就變成了垃圾,java引入垃圾回收機制(Garbage Collection)來處理垃圾,他是一個動態(tài)存儲管理技術(shù),由java虛擬機自動回收垃圾對象所占的內(nèi)存空間,不需要程序代碼來顯式釋放。
?
總結(jié)
以上是生活随笔 為你收集整理的JavaSE各阶段练习题----多线程-垃圾回收 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。