后台线程(Daemon)的作用
如果想让某个线程随着主线程的结束而结束,该如何做?例如线程a如何随着主线程的结束而结束。解决这个问题,我们可以将线程a设置为后台线程,这样线程就会随着主线段的结束而结束。
下面我们将从2点来介绍后台线程。
第一点设置后台线程。
第二点判断线程是否为后台线程。
首先来看第一点,我们可以使用thread的类里面的setdaemon方法,它的作用就是设置该线程是否为后台线程,
它只有一个参数on,当他为true 时设置线程为后台线程,当他为false时设置县城不为后台线程。当线程死亡时,再这样setdaemon方法就会引发非法线程状态异常。
因为死亡的线程已经执行结束,它无法再被设置为后台线程。
下面来演示该方法,首先制定一个打印任务,任务的内容是无限打印正在运行这句话,然后来执行该任务。
首先将任务创建出来,然后创建线程接着将任务传递给线程,再接着将该线程设置为后台线程。当主线程运行结束后,该线程结束。接着启动线程
为了让后台线程效果更明显,使主线程消灭一秒钟后结束,sleep方法有异常,try catch捕获。
从运行结果来看,当主线程运行结束后,后台线程也运行结束,至此第一节解释完毕。
再来看第二点,判断线程是否为后台线程,isDaemon方法的作用就是判断线程是否为后台线程,他返回一个布尔类型的结果,当该线程为后台线程返回true,否则返回false,
下面来演示该方法,修改之前的打印任务,删除打印语句,
再来修改之前的main方法,删除sleep方法,然后在setDaemon方法之前输出该线程是否为后台线程,接着在setDaemon方法之后也输出该线程是否为后台线程。
从运行结果来看,thread的线程设置前不是后台线程,设置后置后台线程。
最后来总结一下本节的内容。本节介绍了thread类里面的两个方法,分别是setdaemon和isdaemon,它们都是非静态方法,setdaemon方法的作用是设置线程是否为后台线程,isdaemon方法的作用是判断该线程是否为后台线程,在实际开发中偶尔也会用到他们。
附录:
笔记完整文本:
如果想让某个线程随着主线程的结束而结束,该如何做?例如线程a如何随着主线程的结束而结束解决这个问题,我们可以将线程a设置为后台线程,这样线程就会随着主线段的结束而结束。下面我们将从2点来介绍,后产,县城。第一点设置合同县城。第二点判断线程是否为后台线程。首先来看第一点,我们可以使用three的类里面的测的dim方法,它的作用就是设置该线程是否为后台线程,它只有一个参数on,当他为处时设置线程为后台线的,单单为4th是设置县城不为后台县城当县城死亡时,再这样set定方法就会引发非法现成状态异常。 因为死亡的县城已经执行结束,它无法再被设置为后台线程。下面来演示该方法,首先制定一个打印任务,任务的内容是无线打印正在运行这句话,然后来执行该任务。首先将任务创建出来,然后创建线程接着将任务传递给线程,再接着将该线程设置为后台线程。当主线程运行结束后,该线程结束接着启动线程,为了让后台线程效果更明显,使主线程消灭一秒钟后结束,磁力普方法有异常,抛出使用拆开其暂停补货。从运行结果来看,当主线程运行结束后,后台线程也运行结束,至此第一节解释完毕。再来看第二点,判断线程是否为后台线程,你的dim方法的作用就是判断线程是否为后台线程,他返回一个布尔类型的结果,当该线程为后台线程返回处,否则返回4th,下面来演示该方法修改之前的打印任务,删除打印语句,再来修改之前的main方法,删除斯利普方法,然后在set闭目方法之前输出该线程是否为后台线程,接着在set蒂姆方法之后也输出该线程是否为后台线程。 从运行结果来看,three的线程设置前不是后台线程设置后置后台线程。最后来总结一下本节的内容。本节介绍了瑞德类里面的两个方法,分别是赛的蒂姆和义子蒂姆,它们都是非静态方法在的定位方法的作用是设置建成是否为后台线程,一字定目方法的作用是判断该县城是否为后台,县城在实际开发中偶尔也会用到他们。