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

驗證後台線程的java多線程技術

2013-11-23 19:45:02  來源: Java高級技術 

  這個程序驗證了後台線程與用戶線程的區別以及之間的關系證明了只要所有的用戶線程結束了那麼後台線程就將必須結束!

  import ncurrentTimeUnit;

  public class  Test  {

  public  static void  main(String[] args){

  //將主線程的優先級設為最低優先執行main線程創建的線程

  ThreadcurrentThread()setPriority(ThreadMIN_PRIORITY);

  Thread  myThread=new Thread(new Runnable(){

  public void run(){

  while(true)

  {

  Systemoutprintln(i will wait for you in shangling);

  try {

  TimeUnitMILLISECONDSsleep();

  } catch (InterruptedException e) {

  eprintStackTrace();

  }

  }

  }

  });

  myThreadsetDaemon(true); //設置後台線程一定要寫在start()方法的前面要不然是無效的

  myThreadsetPriority(ThreadMAX_PRIORITY);

  myThreadstart();

  Thread userThread = new Thread(new Runnable(){

  public void run(){

  for(int i=;i<;i++)

  Systemoutprintln(this is a user Thread);

  }

  });

  userThreadsetPriority(ThreadMAX_PRIORITY);

  userThreadstart();

  Systemoutprintln(the main thread is end );

  }

  }

  在上面的程序中就能體會到當用戶線程都結束時雖然後台線程(幽靈線程)是一個死循環但是只要所有的用戶線程都結束了那麼系統就會自動停止要讓後台線程執行得久一點只有一個方法那就是延長用戶線程的運行時間例如在main()方法中添加sleep()方法進行延時

  這裡要注意一點不要利用sleep方法來精確計時由於這種方法是依賴操作系統的所以它的計時准確性是非常不可靠的當休眠時間過長時可能會產生意想不到的事情發生!


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27398.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.