Java线程:线程的调度-保护线程[Java编程]
本文“Java线程:线程的调度-保护线程[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
保护线程利用的情形较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是保护线程.还有就是在做数据库利用时刻,利用的数据库衔接池,衔接池本身也包含着很多后台线程,监控衔接个数、超不时间、状况等等.
setDaemon办法的具体阐明:
public final void setDaemon(boolean on)将该线程标志为保护线程或用户线程.当正在运行的线程都是保护线程时,Java 虚拟机退出.
该办法必须在启动线程前调用.
该办法首先调用该线程的 checkAccess 办法,且不带任何参数.这大概抛出 SecurityException(在当前线程中).
参数:
on - 假如为 true,则将该线程标志为保护线程.
抛出:
IllegalThreadStateException - 假如该线程处于活动状况.
SecurityException - 假如当前线程无法改正该线程.
另请拜见:
isDaemon(), checkAccess()
/**
* Java线程:线程的调度-保护线程
*
* @author leizhimin
*/
public class Test {
public static void main(String[] args) {
Thread t1 = new MyCommon();
Thread t2 = new Thread(new MyDaemon());
t2.setDaemon(true); //设置为保护线程
t2.start();
t1.start();
}
}
class MyCommon extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("线程1第" + i + "次履行!");
try {
Thread.sleep(7);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class MyDaemon implements Runnable {
public void run() {
for (long i = 0; i < 9999999L; i++) {
System.out.println("后台线程第" + i + "次履行!");
try {
Thread.sleep(7);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
后台线程第0次履行!
线程1第0次履行!
线程1第1次履行!
后台线程第1次履行!
后台线程第2次履行!
线程1第2次履行!
线程1第3次履行!
后台线程第3次履行!
线程1第4次履行!
后台线程第4次履行!
后台线程第5次履行!
后台线程第6次履行!
后台线程第7次履行!
Process finished with exit code 0
从上面的履行后果可以看出:
前台线程是保证履行完毕的,后台线程还没有履行完毕就退出了.
实际上:JRE判断程序能否履行完毕的尺度是全部的前台执线程行完毕了,而不管后台线程的状况,因此,在利用后台县城时刻一定要注意这个问题.
出处:http://lavasoft.blog.51cto.com/62575/221845
以上是“Java线程:线程的调度-保护线程[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |