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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Daemon線程

2019-11-18 12:21:04
字體:
供稿:網(wǎng)友

  Daemon線程
  “Daemon”線程的作用是在程序的運(yùn)行期間于后臺提供一種“常規(guī)”服務(wù),但它并不屬于程序的一個基本部分。因此,一旦所有非Daemon線程完成,程序也會中止運(yùn)行。相反,假若有任何非Daemon線程仍在運(yùn)行(比如還有一個正在運(yùn)行main()的線程),則程序的運(yùn)行不會中止。
  通過調(diào)用isDaemon(),可調(diào)查一個線程是不是一個Daemon,而且能用setDaemon()打開或者關(guān)閉一個線程的Daemon狀態(tài)。假如是一個Daemon線程,那么它創(chuàng)建的任何線程也會自動具備Daemon屬性。
  下面這個例子演示了Daemon線程的用法:
  //: Daemons.java
  // Daemonic behavior
  import java.io.*;
  class Daemon extends Thread {
   PRivate static final int SIZE = 10;
   private Thread[] t = new Thread[SIZE];
   public Daemon() {
   setDaemon(true);
   start();
   }
   public void run() {
   for(int i = 0; i < SIZE; i++)
   t[i] = new DaemonSpawn(i);
   for(int i = 0; i < SIZE; i++)
   System.out.println(
   "t[" + i + "].isDaemon() = "
   + t[i].isDaemon());
   while(true)
   yield();
   }
  }
  class DaemonSpawn extends Thread {
   public DaemonSpawn(int i) {
   System.out.println(
   "DaemonSpawn " + i + " started");
   start();
   }
   public void run() {
   while(true)
   yield();
   }
  }
  public class Daemons {
   public static void main(String[] args) {
   Thread d = new Daemon();
   System.out.println(
   "d.isDaemon() = " + d.isDaemon());
   // Allow the daemon threads to finish
   // their startup processes:
   BufferedReader stdin =
   new BufferedReader(
   new InputStreamReader(System.in));
   System.out.println("Waiting for CR");
   try {
   stdin.readLine();
   } catch(IOException e) {}
   }
  }
  Daemon線程可將自己的Daemon標(biāo)記設(shè)置成“真”,然后產(chǎn)生一系列其他線程,而且認(rèn)為它們也具有Daemon屬性。隨后,它進(jìn)入一個無限循環(huán),在其中調(diào)用yield(),放棄對其他進(jìn)程的控制。在這個程序早期的一個版本中,無限循環(huán)會使int計(jì)數(shù)器增值,但會使整個程序都好象陷入停頓狀態(tài)。換用yield()后,卻可使程序布滿“活力”,不會使人產(chǎn)生停滯或反應(yīng)遲鈍的感覺。
  一旦main()完成自己的工作,便沒有什么能阻止程序中斷運(yùn)行,因?yàn)檫@里運(yùn)行的只有Daemon線程。所以能看到啟動所有Daemon線程后顯示出來的結(jié)果,System.in也進(jìn)行了相應(yīng)的設(shè)置,使程序中斷前能等待一個回車。假如不進(jìn)行這樣的設(shè)置,就只能看到創(chuàng)建Daemon線程的一部分結(jié)果(試試將readLine()代碼換成不同長度的sleep()調(diào)用,看看會有什么表現(xiàn))。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 手机| 阿荣旗| 当阳市| 白玉县| 桦甸市| 定陶县| 昌都县| 工布江达县| 江西省| 甘谷县| 滕州市| 格尔木市| 抚顺县| 宜阳县| 琼结县| 开江县| 青神县| 永善县| 萨迦县| 花莲县| 日喀则市| 桃江县| 固原市| 景洪市| 突泉县| 织金县| 凌源市| 图们市| 上蔡县| 阿勒泰市| 武穴市| 惠水县| 乌苏市| 桓仁| 竹溪县| 苏州市| 石阡县| 灵武市| 河东区| 嘉祥县| 中方县|