第三次学JAVA再学不好就吃翔(part117)--单例设计模式
生活随笔
收集整理的這篇文章主要介紹了
第三次学JAVA再学不好就吃翔(part117)--单例设计模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考,有錯必糾
文章目錄
- 多線程
- 單例設計模式
- 餓漢式
- 懶漢式
- 第三種格式
- Timer類
- 線程的五種狀態
多線程
單例設計模式
單例設計模式,即保證類在內存中只有一個對象,如何保證類在內存中只有一個對象呢:
- 控制類的創建,不讓其他類來創建本類的對象;
- 在本類中定義一個本類的對象;
- 提供本類對象的公共訪問方式。
餓漢式
class Singleton {//1,私有構造方法,其他類不能訪問該構造方法了private Singleton(){}//2,創建本類對象private static Singleton s = new Singleton();//3,對外提供公共的訪問方法public static Singleton getInstance() { //獲取實例return s;} }
懶漢式
class Singleton {//1,私有構造方法,其他類不能訪問該構造方法了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,私有構造方法,其他類不能訪問該構造方法了private Singleton(){}//2,聲明一個引用public static final Singleton s = new Singleton(); }
- 舉個例子
單例設計模式:
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,私有構造方法,其他類不能訪問該構造方法了private Singleton(){}//2,聲明一個引用public static final Singleton s = new Singleton(); }控制臺輸出:
trueTimer類
Timer類是一種線程設施,用于安排以后在后臺線程中執行的任務。可安排任務執行一次,或者定期重復執行。
- 構造方法
創建一個新計時器,相關的線程不作為守護程序運行。
- 方法
public void schedule(TimerTask task, Date time)
安排在指定時間執行指定任務。如果此時間已過去,則安排立即執行該任務。
public void schedule(TimerTask task, Date firstTime, long period)安排指定任務在指定時間開始進行重復的固定延遲執行。以近似固定的時間間隔(由指定的周期分隔)進行后續執行。
- 舉個例子
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();//在指定時間安排指定任務//第一個參數,是安排的任務,第二個參數是執行的時間,第三個參數是過多長時間再重復執行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)已過時。 使用構造方法 Date(long date) 替代 構造一個使用給定 year、month 和 day 初始化的 Date 對象。 如果給定參數超出范圍,則結果是不確定的。 參數: year - year 減去 1900,它必須是 0 到 8099 之間的數。(注意,8099 是由 9999 減去 1900 得到的。) month - 0 到 11 之間的數 day - 1 到 31 之間的數 hrs - 0-23之間的小時數 min - 0-59之間的分鐘數 sed - 0-59之間的秒數*/class MyTimerTask extends TimerTask {@Overridepublic void run() {System.out.println("背6級單詞!!!");} }線程的五種狀態
總結
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part117)--单例设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第三次学JAVA再学不好就吃翔(part
- 下一篇: Steam游戏《Northgard(北境