Java語言基礎:多線程 – JAVA編程語言程序開發技術文章

1.  有兩種方法可以創建並運行一個線程:


繼承Thread類並覆蓋Run方法,Run中的代碼就在另一個線程執行。
view plaincopy to clipboardprint?
class MyThread extends Thread {  
    MyThread() {  
        // 調用下面代碼,線程開始運行  
        start();  
    }  
   
    @Override 
    public void run() {  
        // 這裡的代碼是在線程中執行的  
        int i = 0;  
        while (i < 20)  
        {  
            System.out.println(i);  
            try {  
                sleep(100);  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            ++i;  
        }  
    }  
}  
   
public class Main {              
    public static void main(String[] args) {  
        MyThread myThread = new MyThread();  
    }  

class MyThread extends Thread {
    MyThread() {
        // 調用下面代碼,線程開始運行
        start();
    }
 
    @Override
    public void run() {
        // 這裡的代碼是在線程中執行的
        int i = 0;
        while (i < 20)
        {
            System.out.println(i);
            try {
                sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            ++i;
        }
    }
}
 
public class Main {           
    public static void main(String[] args) {
        MyThread myThread = new MyThread();
    }
}
 


實現Runnable接口並傳給新建的Thread類,實現類的Run方法即在另一個線程執行。
view plaincopy to clipboardprint?
// 實現Runnable接口  
public class Main implements Runnable {              
    @Override 
    public void run() {  
        // 這裡的代碼是在線程中執行的  
        int i = 0;  
        while (i < 20)  
        {  
            System.out.println(i);  
            try {  
                Thread.sleep(100);  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
            ++i;  
        }  
    }  
   
    public static void main(String[] args) {  
        Main runable = new Main();  
        new Thread(runable).start();  
    }  

// 實現Runnable接口
public class Main implements Runnable {           
    @Override
    public void run() {
        // 這裡的代碼是在線程中執行的
        int i = 0;
        while (i < 20)
        {
            System.out.println(i);
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            ++i;
        }
    }
 
    public static void main(String[] args) {
        Main runable = new Main();
        new Thread(runable).start();
    }
}
 


2.  後臺線程(daemon)不屬於程序不可或缺的一部分,當程序存在非後臺線程時,程序就不會終止;而如果非後臺線程都結束瞭,此時不管有沒有後臺線程,程序都可以隨時終止。要設定一個線程為後臺線程,可以調用Thread.setDaemon(true),在一個後臺線程中創建其他線程,這些線程也自動被設為後臺線程:
view plaincopy to clipboardprint?
class MyThread extends Thread {  
    MyThread() {  
        // 把該線程設為後臺線程  
        setDaemon(true); &nbs

發佈留言