国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java多線程程序設計入門

2019-11-18 15:43:55
字體:
來源:轉載
供稿:網友

  在java語言產生前,傳統的程序設計語言的程序同一時刻只能單任務操作,效率非常低,例如程序往往在接收數據輸入時發生阻塞,只有等到程序獲得數據后才能繼續運行。
隨著Internet的迅猛發展,這種狀況越來越不能讓人們忍受:假如網絡接收數據阻塞,后臺程序就處于等待狀態而不繼續任何操作,而這種阻塞是經常會碰到的,此時CPU資源被白白的閑置起來。假如在后臺程序中能夠同時處理多個任務,該多好啊!應Internet技術而生的Java語言解決了這個問題,多線程程序是Java語言的一個很重要的特點。在一個Java程序中,我們可以同時并行運行多個相對獨立的線程,例如,我們假如創建一個線程來進行數據輸入輸出,而創建另一個線程在后臺進行其它的數據處理,假如輸入輸出線程在接收數據時阻塞,而處理數據的線程仍然在運行。多線程程序設計大大提高了程序執行效率和處理能力。

  線程的創建

  我們知道Java是面向對象的程序語言,用Java進行程序設計就是設計和使用類,Java為我們提供了線程類Thread來創建線程,創建線程與創建普通的類的對象的操作是一樣的,而線程就是Thread類或其子類的實例對象。下面是一個創建啟動一個線程的語句:

  Thread thread1=new Thread(); file://聲明一個對象實例,即創建一個線程;

  Thread1.run(); file://用Thread類中的run()方法啟動線程;

  從這個例子,我們可以通過Thread()構造方法創建一個線程,并啟動該線程。事實上,啟動線程,也就是啟動線程的run()方法,而Thread類中的run()方法沒有任何操作語句,所以這個線程沒有任何操作。要使線程實現預定功能,必須定義自己的run()方法。Java中通常有兩種方式定義run()方法:

  通過定義一個Thread類的子類,在該子類中重寫run()方法。Thread子類的實例對象就是一個線程,顯然,該線程有我們自己設計的線程體run()方法,啟動線程就啟動了子類中重寫的run()方法。

  通過Runnable接口,在該接口中定義run()方法的接口。所謂接口跟類非常類似,主要用來實現非凡功能,如復雜關系的多重繼續功能。在此,我們定義一個實現Runnable() 接口的類,在該類中定義自己的run()方法,然后以該類的實例對象為參數調用Thread類的構造方法來創建一個線程。

  線程被實際創建后處于待命狀態,激活(啟動)線程就是啟動線程的run()方法,這是通過調用線程的start()方法來實現的。

  下面一個例子實踐了如何通過上述兩種方法創建線程并啟動它們:

  // 通過Thread類的子類創建的線程;

   class thread1 extends Thread
    { file://自定義線程的run()方法;
     public void run()
      {
       System.out.      }
     }

  file://通過Runnable接口創建的另外一個線程;

  class thread2 implements Runnable

   { file://自定義線程的run()方法;

    public void run()
    {
     System.out.println("Thread2 is running…");
    }
   }

   file://程序的主類'

   class Multi_Thread file://聲明主類;
    {
     plubic static void mail(String args[]) file://聲明主方法;
      {
       thread1 threadone=new thread1(); file://用Thread類的子類創建線程;
       Thread threadtwo=new Thread(new thread2()); file://用Runnable接口類的對象創建線程;
       threadone.start(); threadtwo.start(); file://strat()方法啟動線程;
      }
     }

  運行該程序就可以看出,線程threadone和threadtwo交替占用CPU,處于并行運行狀態。可以看出,啟動線程的run()方法是通過調用線程的start()方法來實現的(見上例中主類),調用start()方法啟動線程的run()方法不同于一般的調用方法,調用一般方法時,必須等到一般方法執行完畢才能夠返回start()方法,而啟動線程的run()方法后,start()告訴系統該線程預備就緒可以啟動run()方法后,就返回start()方法執行調用start()方法語句下面的語句,這時run()方法可能還在運行,這樣,線程的啟動和運行并行進行,實現了多任務操作。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五大连池市| 精河县| 蓬安县| 南江县| 海口市| 尼勒克县| 安陆市| 太白县| 赣州市| 芜湖县| 河池市| 白朗县| 阳信县| 澄江县| 庆城县| 潜江市| 鱼台县| 永州市| 桃江县| 晋宁县| 阿勒泰市| 富裕县| 昌都县| 临朐县| 秭归县| 高陵县| 门源| 张家川| 渭南市| 奇台县| 北川| 德昌县| 黄大仙区| 白城市| 崇明县| 黑河市| 类乌齐县| 宁乡县| 德格县| 巴青县| 上思县|