Java - 執行緒基礎

襲冷發表於2014-06-30

一、建立執行緒

        編寫執行緒執行時執行的程式碼有兩種方式:一種是建立Thread子類的一個例項並重寫run方法,第二種是建立類的時候實現Runnable介面。

    1、建立Thread的子類

        建立Thread子類的一個例項並重寫run方法,run方法會在呼叫start()方法之後被執行。例子如下:

public class MyThread extends Thread {
	
	@Override
	public void run() {
		System.out.println("extends thread!");
	}
	
}
        可以用如下方式建立並執行上述Thread子類:

new MyThread().start();
        補充:也可以如下建立一個Thread的匿名子類並執行它:

new Thread(){
	public void run(){
		System.out.println("anonymous extends thread!");
	}
}.start();
    2、實現Runnable介面

        新建一個實現了java.lang.Runnable介面的類的例項,例項中的方法可以被執行緒呼叫。例子如下:

public class MyRunnable implements Runnable {

	@Override
	public void run() {
		System.out.println("implements runnable!");

	}

}
        要使執行緒執行run()方法,需要在Thread類的建構函式中傳入MyRunnable的例項物件。示例如下:
new Thread(new MyRunnable()).start();
        補充:也可以一個實現了Runnable介面的匿名類並執行它:

new Thread(
	new Runnable() {
		@Override
		public void run() {
			System.out.println("anonymous implement runnable!");
		}
	}
).start();

二、一些問題
    1、關於執行緒的執行

        一旦執行緒啟動後start方法就會立即返回,而不會等待到run方法執行完畢才返回。

    2、呼叫run()方法和start()方法的區別:

        當建立一個執行緒並呼叫執行緒的run()方法時,如下所示:

new MyThread().run();    //new MyThread().start();

        用上面的方式呼叫的run()方法並非是由剛建立的新執行緒所執行的,而是被建立新執行緒的當前執行緒所執行的。想要讓建立的新的執行緒執行run()方法,必須呼叫新執行緒的start方法即被註釋的方式。

    3、執行緒的名稱

        當建立一個執行緒的時候,可以給執行緒起一個名字。示例如下:

MyRunnable runnable = new MyRunnable();
Thread thread = new Thread(runnable, "My First Thread");
thread.start();
System.out.println(thread.getName());
        在Runnable的實現類中,如果要獲取執行緒名可以通過如下方式取得當前執行緒的引用:

Thread.currentThread();
 
 

 

相關文章