1. 程式人生 > >43. 守護線程 和 join方法

43. 守護線程 和 join方法

就是 廣告 spa 情況下 over 模擬 nts tro stack

1.守護線程(後臺線程):
我們在使用一款軟件的時候,有的軟件會讓我們在不知道的情況下下載一些東西,那麽這個就是後臺線程。
一般用於提高軟件的下載量(也就是賺取一些廣告費)

setDaemon(boolean b) 設置是否為守護線程
isDaemon() 返回是否為守護線程(是true否false)
註意:當程序停止運行的時候,守護線程也必須停止

下面我們來模擬使用qq,然後後臺下載一款軟件

public class Demo11 implements Runnable{
    @Override
    
public void run() { for (int i = 1; i <= 100; i++) { System.out.println("目前下載"+i+"%"); } } public static void main(String[] args) { Demo11 d = new Demo11(); Thread thread = new Thread(d); thread.setDaemon(true);//設置為守護線程 thread.start();
//當i為100時qq程序停止 for (int i = 0; i < 100; i++) { System.out.println("使用qq中"+i); } } }

2.join 加入:

    當在一個線程任務體(run)中使用此方法時,必須要等調用join方法的線程執行完成任務後,這個任務體才能繼續執行

代碼實例: 

class Thread2 implements Runnable{
    @Override
    public void run() {
        for (int
i = 0; i < 20; i++) { System.out.println(Thread.currentThread().getName()+":"+i); } } } public class Demo12 implements Runnable{ @Override public void run() { for (int i = 0; i < 100; i++) { if(i==30) { Thread2 t = new Thread2(); Thread thread = new Thread(t,"加入的線程"); thread.start(); try { thread.join();//加入一個線程 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+":"+i); } } public static void main(String[] args) { Demo12 d = new Demo12(); Thread thread = new Thread(d,"被加入的線程"); thread.start(); } }

43. 守護線程 和 join方法