<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    dream-in-fly
    路上...
    posts - 31,  comments - 6,  trackbacks - 0
    作者:xm4014

    今天開始學(xué)習(xí)Java中多線程的實現(xiàn).

      線程是一些可以并行的,獨立的執(zhí)行的代碼.之前我編的程序都只能做一件事情,也就是只有一個線程.多線程的編程就是可以將程序任務(wù)分成多個并行的子任務(wù),同時運行,互不干擾.我對多線程的理解是從格斗游戲得來的.格斗游戲中兩人對打就是通過兩個線程來實現(xiàn)的吧,否則如何能夠你出你的招,我發(fā)我的沖擊波呢.

      (1月18日)突然想到一個問題,補充一下.多線程是不是我們通常所說的多任務(wù)呢?我的理解是,不能這樣說也可以這樣說.

      簡單說來,多線程提供了一種在進(jìn)程內(nèi)部進(jìn)行多個線程并行調(diào)度的機制,而多任務(wù)則提供的是在一個操作系統(tǒng)內(nèi)部運行多個進(jìn)程的機制.

      多任務(wù)操作系統(tǒng)(如Windows)的基本原理是這樣的:操作系統(tǒng)將CPU的時間片分配給多個線程,每個線程在操作系統(tǒng)指定的時間片內(nèi)完成(注意,這里的多個線程是分屬于不同進(jìn)程的).操作系統(tǒng)不斷的從一個線程的執(zhí)行切換到另一個線程的執(zhí)行,如此往復(fù),宏觀上看來,就好像是多個線程在一起執(zhí)行.由于這多個線程分屬于不同的進(jìn)程,因此在我們看來,就好像是多個進(jìn)程在同時執(zhí)行,這樣就實現(xiàn)了多任務(wù).Whoops,真繞口.

      如上,多線程和多任務(wù)是有很明顯的區(qū)別的.但是再想一下,在一個應(yīng)用程序內(nèi)實現(xiàn)多線程不也是靠CPU分配時間片嗎?既然原理是相同的,那么多線程也可以說是多任務(wù)的.

      一個Java程序啟動后,就已經(jīng)有一個線程在運行,我們可以通過下面的例子來初步建立一個線程的實際印象

    class testthread{
    public static void main(String args[]){
    Thread t=Thread.currentThread();
    t.setName("This Thread is running");
    System.out.println("The running thead:"+t);
    try{
    for(int i=0;i<5;i++)
    {
    System.out.println("Sleep time"+i);
    Thread.sleep(1000);//掛起線程,就是讓線程休息一會兒,
    //不占用系統(tǒng)資源,因此其它線程可以繼續(xù).
    //這里的Thread缺省表示主線程
    }
    }catch(InterruptedException e){System.out.println("thread has wrong");}
    }
    }

      這只是一個線程,那么我們怎么實現(xiàn)多個線程呢?又怎樣讓線程做我安排它要做的事情呢?

      實現(xiàn)線程體的構(gòu)造有兩種方法.

      第一種方法是通過繼承構(gòu)造線程體.

      在Java中專門有一個Thread類,這個類里面有一個函數(shù)run(),里面記錄著線程要完成的操作,就好像通常所說的主函數(shù)main()一樣,run()函數(shù)運行完了,線程就結(jié)束了.通過繼承這個類,我們可以定義我們自己的線程,在run函數(shù)中告訴它該做什么事情.下面的程序就是繼承了一個SimpleThread類,用兩個線程來輸出HelloWorld.

    public class TwoThread{

    public static void main(String args[]){
    new SimpleThread("HelloWorld1").start();//創(chuàng)建兩個線程的實例,就這么簡單
    new SimpleThread("HelloWorld2").start();
    }

    }
    class SimpleThread extends Thread{ file://真正的內(nèi)容在這里
    public SimpleThread(String str){
    super(str);//super代表SimpleThread類的直接父類,這里就是Thread
    }

    file://我們要線程做的事情都在這里了
    public void run(){
    for(int i=0;i<10;i++){
    System.out.println(i+" "+getName());
    try{
    sleep((int)(Math.random()*1000));
    }catch(InterruptedException e){}
    }
    System.out.println("Done!"+getName());
    }
    }

      運行的結(jié)果是兩個線程交替顯示各自的HelloWorld十次,輸出是混在一起的,因為兩個線程是同時運行的.

    posted on 2005-04-01 20:30 小毅 閱讀(206) 評論(0)  編輯  收藏 所屬分類: 手機游戲

    <2005年4月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章檔案

    blog 好友

    友情鏈接

    常用網(wǎng)站

    技術(shù)網(wǎng)站論壇

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲午夜免费视频| 日韩毛片在线免费观看| 你懂的免费在线观看网站| 免费成人黄色大片| 久久免费的精品国产V∧| 亚洲不卡无码av中文字幕| 搡女人真爽免费视频大全| 亚洲老熟女@TubeumTV| 秋霞人成在线观看免费视频| 亚洲精品无码精品mV在线观看| 人禽伦免费交视频播放| 国产亚洲av人片在线观看| 中文成人久久久久影院免费观看| 中文字幕亚洲激情| 13小箩利洗澡无码视频网站免费| 久久精品国产亚洲av麻豆| h在线观看视频免费网站| 久久亚洲熟女cc98cm| 可以免费看的卡一卡二| 亚洲AV无码专区亚洲AV桃| 国产jizzjizz视频免费看| 性生大片视频免费观看一级 | 精品免费久久久久久久| 亚洲av永久无码精品三区在线4| 亚洲免费网站观看视频| 国产精品亚洲а∨无码播放麻豆| 亚洲AV蜜桃永久无码精品| 国产免费拔擦拔擦8X高清在线人| 久久精品亚洲中文字幕无码麻豆| 成人激情免费视频| 国产免费福利体检区久久| 亚洲精品美女在线观看播放| 女人张腿给男人桶视频免费版| 水蜜桃视频在线观看免费| 国产V亚洲V天堂A无码| 黄页网站在线看免费| 日本一区二区在线免费观看 | 成人免费午夜无码视频| 特级毛片免费观看视频| 久久精品国产亚洲av麻| 日韩精品免费电影|