在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java/ think in java中并發(fā)

think in java中并發(fā)

/**

 *  守護(hù)線(xiàn)程

 */

public class Daemons {

 

    /**

     * @param args

     * @throws InterruptedException

     */

    public static void main(String[] args) throws InterruptedException {

        Thread d = new Thread(new Daemon());

        d.setDaemon(true); //必須在啟動(dòng)線(xiàn)程前調(diào)用

        d.start();

        System.out.println("d.isDaemon() = " + d.isDaemon() + ".");

        TimeUnit.SECONDS.sleep(1);

    }

 

}

 

class DaemonSpawn implements Runnable {

 

    public void run() {

        while (true) {

            Thread.yield();

        }

    }

   

}

 

class Daemon implements Runnable {

    private Thread[] t = new Thread[10];

 

    public void run() {

        for (int i=0; i<t.length; i++) {

            t[i] = new Thread(new DaemonSpawn());

            t[i].start();

            System.out.println("DaemonSpawn " + i + " started.");

        }

        for (int i=0; i<t.length; i++) {

            System.out.println("t[" + i + "].isDaemon() = " +

                    t[i].isDaemon() + ".");

        }

        while (true) {

            Thread.yield();

        }

    }

   

}

 

運(yùn)行結(jié)果:

d.isDaemon() = true.
DaemonSpawn 0 started.
DaemonSpawn 1 started.
DaemonSpawn 2 started.
DaemonSpawn 3 started.
DaemonSpawn 4 started.
DaemonSpawn 5 started.
DaemonSpawn 6 started.
DaemonSpawn 7 started.
DaemonSpawn 8 started.
DaemonSpawn 9 started.
t[0].isDaemon() = true.
t[1].isDaemon() = true.
t[2].isDaemon() = true.
t[3].isDaemon() = true.
t[4].isDaemon() = true.
t[5].isDaemon() = true.
t[6].isDaemon() = true.
t[7].isDaemon() = true.
t[8].isDaemon() = true.
t[9].isDaemon() = true.

clipboard.png

clipboard.png

在第二版的664頁(yè),其中我看到這兩個(gè)while() yield()(使任務(wù)一直處于讓出線(xiàn)程的狀態(tài));
一直讓出線(xiàn)程?這有什么意義呢?比如DaemonSpawn,這個(gè)任務(wù) 你讓他平平靜靜的執(zhí)行完不就好了嗎?執(zhí)行完
就解放線(xiàn)程了。Daemon中的while() yield(); 又有什么意義呢?main本來(lái)就只啟動(dòng)了一個(gè)線(xiàn)程來(lái)執(zhí)行Daemon任務(wù)
那讓他平平靜靜執(zhí)行完不就好了嗎。。。。。。。對(duì)角懵逼,線(xiàn)性懵逼啊

誰(shuí)能系統(tǒng)的解釋一下嗎????
ps:最近在學(xué)線(xiàn)程,各位有什么方法,書(shū)籍,途徑 介紹嗎?看think in java看的好吃力

回答
編輯回答
枕邊人

Daemon是駐留線(xiàn)程,目的是長(zhǎng)期執(zhí)行任務(wù),如果一次就結(jié)束了,可能也就沒(méi)有必要稱(chēng)其為Daemon了.

改成下面這樣你可能就好理解了.

 public void run() {

        while (true) {

            doSomeThingAgainAndAgainFromTimeToTime();

            Thread.yield();

        }

    }
2017年11月30日 01:49