熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

通過繼承Thread創建多線程

2013-11-23 19:45:44  來源: Java高級技術 
一個進程中可以包含一個或多個線程一個線程就是一個程序內部的一條執行線索
  
  在單線程中程序代碼按調用順序依次往下執行在這種情況下當主函數調用了子函數主函數必須等待子函數返回後才能繼續往下執行不能實現兩段程序代碼同時交替運行的效果如果要一程序中實現多段代碼同時交替運行就需產生多個線程並指定每個線程上所要運行的程序代碼段這就是多線程
  
  當程序啟動運行是就自動產生了一個線程主函數main就是在這個線程上運行的當不再產生新的線程時程序就是單線程的
  
  創建多線程有兩種方法繼承Thread類和實現Runnable接口
  
  一個javalangThread類的對象代表一個線程
  
  通過Thread類和它定義的對象就可以獲得當前線程對象獲取某一線程的名稱
  
  實現多線程可通過編寫一個繼承了Thread類的子類子類要覆蓋Thread類中的run函數在子類run函數中調用想在新線程上運行的程序代碼
  
  啟動一個新的線程不是直接調用Thread子類對象的run方法而是調用Thread子類對象的start方法
  
  Thread類對象的start方法將產生一個新的線程並在該線程上運行該Thread類對象中的run方法根據面向對象的多態性在該線程上實際運行的是Thread子類對象的run方法
  
  由於線程代碼段在run方法中那麼該方法執行完後線程也就相應的結束了因而可以通過控制run方法中的循環條件來控制線程的終止
  
  public class ThreadDemo {
  
  public static void main(String args[]){
  
  new TestThread()start()
  
  TestThread thread = new TestThread()
  
  TestThread thread = new TestThread()
  
  threadstart()
  
  threadstart()
  
  /*while(true){
  
  Systemoutprintln(main thread is runing…
  
  }
  
  */
  
  }
  
  }
  
  class TestThread extends Thread {
  
  public void run(){
  
  while(true){
  
  Systemoutprintln(ThreadcurrentThread()getName() + is runing!!!
  
  try {
  
  Threadsleep(
  
  } catch (InterruptedException e) {
  
  // TODO Autogenerated catch block
  
  eprintStackTrace()
  
  }
  
  }
  
  }
  
  }
  
  class TestThread extends Thread {
  
  public void run(){
  
  while(true){
  
  Systemoutprintln(ThreadcurrentThread()getName() + is runing***
  
  try {
  
  Threadsleep(
  
  } catch (InterruptedException e) {
  
  // TODO Autogenerated catch block
  
  eprintStackTrace()
  
  }
  
  }
  
  }
  
  }
  
  copy from book
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27409.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.