测试守护线程,报错!!
public class ThreadMain {
public static void main(String[] args) {
MyThread myThread = new MyThread();
Thread.currentThread().setDaemon(true);
myThread.start();
String name = Thread.currentThread().getName();
for (int j = 1; j <=50 ; j++) {
System.out.println(name+"\t"+"j===="+j);
}
错误如下:
Exception in thread "main" java.lang.IllegalThreadStateException
错误原因:
main函数是程序开始的入口,所以主线程是最先开始的进程,而thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。
修改:
public class MyThread extends Thread{
@Override
public void run() {
//得到当前线程的名字
String name = Thread.currentThread().getName();
for (int i=1;i<=50;i++) {
System.out.println("name===="+name+",i===="+i);
}
}
}
public class ThreadMain {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.setDaemon(true);
myThread.start();
String name = Thread.currentThread().getName();
for (int j = 1; j <=20 ; j++) {
System.out.println(name+"\t"+"j===="+j);
}