我們知道當前臺進程停止時,後臺進程也會自動停止,那如何直觀的看後臺前臺的運行呢?
//設置兩個線程:線程1,線程2
class FirstOne implements Runnable{
public void run(){
while(true){
System.out.println("線程1");
}
}
}
class FirstTwo implements Runnable{
public void run(){
while(true){
System.out.println("線程2");
}
}
}
public class MultithreadingTwo {
//主函數是一個前臺線程
public static void main(String[] args){
Thread one=new Thread(new FirstOne(),"線程1");
Thread two=new Thread(new FirstTwo(),"線程2");
one.setDaemon(true);
two.setDaemon(true);//將兩個線程一起設爲後臺線程
one.start();//設置斷點
two.start();//設置斷點
for(int i=0;i<50;i++){
System.out.println("one");
}//延長前臺線程的運行時間
System.out.println("one進程是否爲後臺進程"+one.isDaemon());//設置斷點
System.out.println("two進程是否爲後臺進程"+two.isDaemon());
}
}
(在控制檯輸出的內容可以判斷什麼在運行)
1.根據代碼設置斷點(斷點位置不同,看到的東西多少也不同)
2.進行調試,注意運行到第一個斷點時,後臺線程還未運行,一步步調試,運行到第二個斷點時,發現第一個後臺進程在運行,同樣運行到第三個斷點,兩個後臺進程都在運行,主函數全部結束後,兩個後臺進程都結束
當我們不設置斷點時,控制檯會優先響應前臺進程中的,可以自己測試
總結:
*當我們開啓後臺進程時,它會一直運行,知道關閉或前臺進程全部停止
*主函數中的進程是前臺進程
*前臺進程的優先級別比後臺進程的高