程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> [javaSE] 多線程(守護線程),javase多線程

[javaSE] 多線程(守護線程),javase多線程

編輯:JAVA綜合教程

[javaSE] 多線程(守護線程),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();
            }
        }
    }

}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved