創(chuàng)建線程的兩種方式及靜態(tài)代理

創(chuàng)建線程有兩種方式一種是繼承Thread類另一種是繼承Runnable接口實現(xiàn)靜態(tài)代理。

1.繼承Thread方式:

public class MyThread extends Thread {
    @Override
    public void run(){
        super.run();
        System.out.println("MyThread");
    }
}
public class Run {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        myThread.start();
        System.out.println("運(yùn)行結(jié)束");
    }
}

1)創(chuàng)建一個類繼承Thread類,
2)改寫run()方法颓帝,
3)再對象.start()疤苹。

2.靜態(tài)代理方法實現(xiàn)(實現(xiàn)Runnable接口):由程序員創(chuàng)建或工具生成代理類的源碼汰翠,再編譯代理類。所謂靜態(tài)也就是在程序運(yùn)行前就已經(jīng)存在代理類的字節(jié)碼文件叙身,代理類和委托類的關(guān)系在運(yùn)行前就確定了。

1)首先靜態(tài)代理包含了兩個角色:代理角色和真實(委托)角色硫狞,
2)上述兩個角色必需實現(xiàn)同一個接口信轿,
3)代理角色要持有真實角色的引用,代理角色中要有方法供代理角色中的的真實角色指向之后生成的實例對象。代理角色里還有一些方法是委托方法
4)創(chuàng)建一個真實對象和一個代理對象残吩,將真實對象賦給代理對象進(jìn)行操作财忽,但是操作的還是真實對象自己。

推薦使用實現(xiàn)Runnable接口:避免單繼承泣侮,方便共享資源定罢。

1>代理接口

/**  
 * 代理接口。處理給定名字的任務(wù)旁瘫。 
 */  
public interface Subject {  
  /** 
   * 執(zhí)行給定名字的任務(wù)祖凫。 
    * @param taskName 任務(wù)名 
   */  
   public void dealTask(String taskName);   
}  

2>委托類,具體處理業(yè)務(wù)酬凳。

/** 
 * 真正執(zhí)行任務(wù)的類惠况,實現(xiàn)了代理接口。 
 */  
public class RealSubject implements Subject {  
  
 /** 
  * 執(zhí)行給定名字的任務(wù)宁仔。這里打印出任務(wù)名稠屠,并休眠500ms模擬任務(wù)執(zhí)行了很長時間 
  * @param taskName  
  */  
   @Override  
   public void dealTask(String taskName) {  
      System.out.println("正在執(zhí)行任務(wù):"+taskName);  
      try {  
         Thread.sleep(500);  
      } catch (InterruptedException e) {  
         e.printStackTrace();  
      }  
   }  
}  

3>靜態(tài)代理類

/** 
 * 代理類,實現(xiàn)了代理接口翎苫。 
 */  
public class ProxySubject implements Subject {  
 //代理類持有一個委托類的對象引用  
 private Subject delegate;  
   
 public ProxySubject(Subject delegate) {  
  this.delegate = delegate;  
 }  
  
 /** 
  * 將請求分派給委托類執(zhí)行权埠,記錄任務(wù)執(zhí)行前后的時間,時間差即為任務(wù)的處理時間 
  *  
  * @param taskName 
  */  
 @Override  
 public void dealTask(String taskName) {  
  long stime = System.currentTimeMillis();   
  //將請求分派給委托類處理  
  delegate.dealTask(taskName);  
  long ftime = System.currentTimeMillis();   
  System.out.println("執(zhí)行任務(wù)耗時"+(ftime - stime)+"毫秒");    
 }  
}  

4>生成靜態(tài)代理類工廠

public class SubjectStaticFactory {  
 //客戶類調(diào)用此工廠方法獲得代理對象煎谍。  
 //對客戶類來說攘蔽,其并不知道返回的是代理類對象還是委托類對象。  
 public static Subject getInstance(){   
  return new ProxySubject(new RealSubject());  
 }  
}  

5>客戶類

public class Client1 {  
 public static void main(String[] args) {  
  Subject proxy = SubjectStaticFactory.getInstance();  
  proxy.dealTask("DBQueryTask");  
 }   
}  

3.通過過實現(xiàn)Runnable接口實現(xiàn)靜態(tài)代理從而開啟多線程:

把Thread當(dāng)成代理類創(chuàng)建main和thread兩個線程

public class Run {
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
        Thread thread = new Thread(myThread);
        thread.start();
        for (int i =0;i<10000;i++){
            System.out.println(i);
        }
    }
}

委托類實現(xiàn)接口

public class MyThread implements Runnable{
    public void run() {
        for (int i = 0;i<10000;i++){
            System.out.println("rua");
        }
    }
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末呐粘,一起剝皮案震驚了整個濱河市满俗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌作岖,老刑警劉巖唆垃,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痘儡,居然都是意外死亡辕万,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渐尿,“玉大人醉途,你說我怎么就攤上這事∥写粒” “怎么了结蟋?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渔彰。 經(jīng)常有香客問我嵌屎,道長,這世上最難降的妖魔是什么恍涂? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任宝惰,我火速辦了婚禮,結(jié)果婚禮上再沧,老公的妹妹穿的比我還像新娘尼夺。我一直安慰自己,他們只是感情好炒瘸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布淤堵。 她就那樣靜靜地躺著,像睡著了一般顷扩。 火紅的嫁衣襯著肌膚如雪拐邪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天隘截,我揣著相機(jī)與錄音扎阶,去河邊找鬼。 笑死婶芭,一個胖子當(dāng)著我的面吹牛东臀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播犀农,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惰赋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了井赌?” 一聲冷哼從身側(cè)響起谤逼,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仇穗,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體戚绕,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纹坐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了舞丛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耘子。...
    茶點(diǎn)故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡果漾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谷誓,到底是詐尸還是另有隱情绒障,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布捍歪,位于F島的核電站户辱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏糙臼。R本人自食惡果不足惜庐镐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望变逃。 院中可真熱鬧必逆,春花似錦、人聲如沸揽乱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凰棉。三九已至损拢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渊啰,已是汗流浹背探橱。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留绘证,地道東北人隧膏。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像嚷那,于是被迫代替她去往敵國和親胞枕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法魏宽,類相關(guān)的語法腐泻,內(nèi)部類的語法,繼承相關(guān)的語法队询,異常的語法派桩,線程的語...
    子非魚_t_閱讀 31,625評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)蚌斩,斷路器铆惑,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • 1、代理概念 為某個對象提供一個代理,以控制對這個對象的訪問员魏。 代理類和委托類有共同的父類或父接口丑蛤,這樣在任何使用...
    孔垂云閱讀 7,649評論 4 54
  • 三種模式的通俗定義: 1、O2O:線下(實體店)體驗撕阎,線上(電商平臺)購買受裹; 2、F2C:從工廠直接到消費(fèi)者虏束,省去...
    A龍軍英閱讀 905評論 0 1
  • 今天和一歲視頻棉饶,后來她說到,婚后雙方關(guān)系如何取決于丈母娘的態(tài)度魄眉。 我笑她結(jié)婚還不到一年就成了婚戀專家砰盐。 我現(xiàn)在開始...
    傅五歲閱讀 162評論 4 0