国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 昌黎县| 普安县| 内乡县| 平凉市| 平度市| 绥阳县| 正宁县| 玉龙| 秦皇岛市| 陇西县| 从江县| 靖西县| 南川市| 襄樊市| 河池市| 勃利县| 锡林郭勒盟| 南华县| 临桂县| 铜鼓县| 东城区| 灵山县| 湘西| 盐亭县| 阿拉尔市| 廉江市| 怀柔区| 怀远县| 大足县| 吉隆县| 太原市| 阿拉善右旗| 东兴市| 文昌市| 惠东县| 肥城市| 孙吴县| 南郑县| 邻水| 阿荣旗| 黄山市|