一、java线程的分类
线程分用户线程和守护线程。
用户线程,在java中所有线程都默认为用户线程。
守护线程是例如日志输出,垃圾回收等之类不影响功能运行且长期有效的线程,需要我们特别设定,将这些线程设置为守护线程以提高程序运行效率。
二、用户线程和守护线程的区别
虚拟机可以不用等待守护线程执行完毕,但必须确保用户线程执行完毕。
产生区别的原因就在于守护线程是例如日志输出,垃圾回收等之类不影响功能运行的线程,因为守护线程不影响功能,所以在我们的用户线程执行完后,可以停止守护线程。
三、代码实例
//测试守护线程
//线程分用户线程和守护线程,守护线程是例如日志输出,垃圾回收等之类不影响功能运行的线程
//虚拟机可以不用等待守护线程执行完毕,但必须确保用户线程执行完毕
public class TestThreadDaemon {
public static void main(String[] args) {
User user = new User();
Guard guard = new Guard();
Thread thread = new Thread(guard);
thread.setDaemon(true);//默认是false表示是用户线程,正常的线程都是用户
thread.start();
new Thread(user).start();//用户线程启动,不用设置就是用户线程
}
}
//用户线程
class User implements Runnable{
@Override
public void run() {
for (int i = 0;i < 36500;i++){
System.out.println("Running with the margin");
}
System.out.println("=====happy everyday======");
}
}
//守护线程
class Guard implements Runnable{
@Override
public void run() {
while (true){
System.out.println("Running all the time");
}
}
}