(54)守护线程 setDaemon方法

来源:互联网 发布:y芸芸网络有公司 编辑:程序博客网 时间:2024/06/09 23:26

人所看到的都是前台线程,当通过Thread类的setDaemon方法将某个线程标记为后台线程后,它就具备了特殊的含义。后台线程的特点是当前台开启后,共同抢夺cpu执行权,当所有前台线程结束后,后台线程会自动结束,后台依赖于前台:前台在,后台就在,前台结束,后台结束。

public class StopThread implements Runnable {    private boolean flag=true;    public synchronized void run() {        while(flag) {            System.out.println(Thread.currentThread().getName()+"-----run");        }    }    public void changeFlag() {        flag=false;    }}public class StopThradDemo {public static void main(String[] args) {    StopThread s=new StopThread();    Thread t1=new Thread(s);    Thread t2=new Thread(s);    t1.steDaemon(true);    t2.steDaemon(true);    t1.start();    t2.start();    int num=0;    while(true) {        if(num++ ==10)        {            break;        }        System.out.println(Thread.currentThread().getName()+"-----"+num);    }}}

自定义的两个线程,仍然能够结束。原因是:现在有三个线程main,t1,t2。将t1,t2标记为后台线程,当前台main结束后,后台线程自动结束了,即所有线程结束。
setDeamon方法必须在开启前调用。
当所有的守护线程结束后,jvn退出。

一个应用简介:有个输入线程和输出线程,当输入线程结束输入时,输出线程也就没存在的意义了,设为后台,自动结束。

阅读全文
0 0
原创粉丝点击