你的位置:首页 > Java教程

[Java教程][javaSE] 多线程(守护线程)


我们一般使用多线程,都是while的死循环,想要结束线程,只需退出死循环即可

当线程中调用了sleep()方法或者wait()方法,当前的线程就会进入冻结状态,这个线程就结束不了

 

调用Thread对象的interrupt()方法,可以强制解冻,此时run()方法中需要捕获到InterruptException异常,然后进行处理,就可以关闭线程了

 

调用Thread对象的setDaemon()方法,参数:true

守护线程是后台线程,当前台线程全都结束以后,后台线程自动结束

class Ticket implements Runnable {  private int nums = 100;  @Override  public void run() {    while (true) {      synchronized (this) {        if (nums > 0) {          try {            Thread.sleep(100);          } catch (Exception e) {            e.printStackTrace();          }          System.out.println(Thread.currentThread().getName() + "==="              + (nums--));        }else{          break;        }      }    }  }}public class TicketDemo {  /**   * @param args   */  public static void main(String[] args) {    Ticket ticket = new Ticket();    Thread t1=new Thread(ticket);    Thread t2=new Thread(ticket);    t1.setDaemon(true);    t2.setDaemon(true);    t1.start();    t2.start();        //主线程执行1秒就结束,其他守护线程还没走完也会结束    while(true){      try {        Thread.sleep(1000);        break;      } catch (Exception e) {        e.printStackTrace();      }    }  }}