第三次学JAVA再学不好就吃翔(part117)--单例设计模式
生活随笔
收集整理的這篇文章主要介紹了
第三次学JAVA再学不好就吃翔(part117)--单例设计模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
學(xué)習(xí)筆記,僅供參考,有錯必糾
文章目錄
- 多線程
- 單例設(shè)計模式
- 餓漢式
- 懶漢式
- 第三種格式
- Timer類
- 線程的五種狀態(tài)
多線程
單例設(shè)計模式
單例設(shè)計模式,即保證類在內(nèi)存中只有一個對象,如何保證類在內(nèi)存中只有一個對象呢:
- 控制類的創(chuàng)建,不讓其他類來創(chuàng)建本類的對象;
- 在本類中定義一個本類的對象;
- 提供本類對象的公共訪問方式。
餓漢式
class Singleton {//1,私有構(gòu)造方法,其他類不能訪問該構(gòu)造方法了private Singleton(){}//2,創(chuàng)建本類對象private static Singleton s = new Singleton();//3,對外提供公共的訪問方法public static Singleton getInstance() { //獲取實例return s;} }
懶漢式
class Singleton {//1,私有構(gòu)造方法,其他類不能訪問該構(gòu)造方法了private Singleton(){}//2,聲明一個引用private static Singleton s ;//3,對外提供公共的訪問方法public static Singleton getInstance() { //獲取實例if(s == null) {//線程1等待,線程2等待s = new Singleton();}return s;} }
第三種格式
class Singleton {//1,私有構(gòu)造方法,其他類不能訪問該構(gòu)造方法了private Singleton(){}//2,聲明一個引用public static final Singleton s = new Singleton(); }
- 舉個例子
單例設(shè)計模式:
package com.guiyang.restudy3;public class D5GetThreadObject {public static void main(String[] args) {Singleton s1 = Singleton.s;Singleton s2 = Singleton.s;System.out.println(s1 == s2);} } class Singleton {//1,私有構(gòu)造方法,其他類不能訪問該構(gòu)造方法了private Singleton(){}//2,聲明一個引用public static final Singleton s = new Singleton(); }控制臺輸出:
trueTimer類
Timer類是一種線程設(shè)施,用于安排以后在后臺線程中執(zhí)行的任務(wù)。可安排任務(wù)執(zhí)行一次,或者定期重復(fù)執(zhí)行。
- 構(gòu)造方法
創(chuàng)建一個新計時器,相關(guān)的線程不作為守護(hù)程序運行。
- 方法
public void schedule(TimerTask task, Date time)
安排在指定時間執(zhí)行指定任務(wù)。如果此時間已過去,則安排立即執(zhí)行該任務(wù)。
public void schedule(TimerTask task, Date firstTime, long period)安排指定任務(wù)在指定時間開始進(jìn)行重復(fù)的固定延遲執(zhí)行。以近似固定的時間間隔(由指定的周期分隔)進(jìn)行后續(xù)執(zhí)行。
- 舉個例子
JAVA代碼:
package com.guiyang.restudy3;import java.util.Date; import java.util.Timer; import java.util.TimerTask;public class D5GetThreadObject {public static void main(String[] args) throws InterruptedException {Timer t = new Timer();//在指定時間安排指定任務(wù)//第一個參數(shù),是安排的任務(wù),第二個參數(shù)是執(zhí)行的時間,第三個參數(shù)是過多長時間再重復(fù)執(zhí)行t.schedule(new MyTimerTask(), new Date(120, 8, 26, 10, 13, 0), 3000);while(true) {Thread.sleep(1000);System.out.println(new Date());}} }/*public Date(int year,int month,int day)已過時。 使用構(gòu)造方法 Date(long date) 替代 構(gòu)造一個使用給定 year、month 和 day 初始化的 Date 對象。 如果給定參數(shù)超出范圍,則結(jié)果是不確定的。 參數(shù): year - year 減去 1900,它必須是 0 到 8099 之間的數(shù)。(注意,8099 是由 9999 減去 1900 得到的。) month - 0 到 11 之間的數(shù) day - 1 到 31 之間的數(shù) hrs - 0-23之間的小時數(shù) min - 0-59之間的分鐘數(shù) sed - 0-59之間的秒數(shù)*/class MyTimerTask extends TimerTask {@Overridepublic void run() {System.out.println("背6級單詞!!!");} }線程的五種狀態(tài)
總結(jié)
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part117)--单例设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第三次学JAVA再学不好就吃翔(part
- 下一篇: ASP.NET编程技巧