1、 java中用两种线程:
1 ) 守护线程
守护线程 (Daemon) 是比较特殊的一种低级别线程,一般被用于在后台为其它线程提供服务。比如当用户编写 Word 文档时,不断进行拼写检查的线程就是个守护线程,它不会影响用户编辑文件。典型的守护线程例子是 JVM 中的系统资源自动回收线程,它始终在低级别的状态中运行,不需要占用大量的系统资源,多用于实时监控和管理系统中的可回收资源。
可以通过调用方法 isDaemon() 来判断一个线程是否是守护线程,而将一个用户线程设置为守护线程的方法是在线程对象创建之前调用线程对象的 setDaemon(boolean on) 方法。 true 为守护线程, false 为用户线程。
public class Daemons extends Thread { public Daemons(){ this.setDaemon(true);//设置线程为守护线程 /*setDaemon必须在线程启动之前调用,当线程运行时调用会发生异常 如果要在一个守护线程中产生其他线程,那么新产生的线程都是守护线程 */ this.start(); } public void run(){ while(true){ System.out.println("daemon "+Thread.currentThread().getName()+" is running"); try { sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { // TODO Auto-generated method stub for(int i=0;i<5;i++){ new Daemons(); } } }
运行结果:
2) 用户线程
守护线程和普通线程的区别就在于守护线程不是应用程序的核心部分。当一个应用程序的所有非守护线程终止运行时,及时仍然有守护线程运行,应用程序也将终止。反之,只要有一个非守护线程运行,应用程序就不会终止。