關鍵技術:
- 線程類必須實現java.lang.Runable接口或者繼承java.lang.Thread類,并且實現run方法,run方法沒有返回值,也沒有輸入參數,也不允許拋出異常。
- 調用Thread類的start實例方法啟動一個線程。調用該方法后,線程準備啟動,當獲得CPU資源時,start方法將自動調用run方法,線程才真正開始運行。
package book.thread;
import java.util.Date;
public class DefineThread {
/**
* 通過繼承java.lang.Thread類定義線程
*/
class ThreadA extends Thread{
/** 線程被運行的時刻 */
private Date runDate;
/**
* 當線程被運行時調用此方法
*/
public void run(){
System.out.println("ThreadA begin,");
this.runDate = new Date();
System.out.println("ThreadA end.");
}
}
/**
* 通過實現java.lang.Runnable接口定義線程
*/
class ThreadB implements Runnable{
/** 線程被運行的時刻 */
private Date runDate;
public void run(){
System.out.println("ThreadB begin,");
this.runDate = new Date();
System.out.println("ThreadB end.");
}
}
/**
* 啟動一個ThreadA線程
*/
public void startA(){
Thread threadA = new ThreadA();
//調用Thread的start方法啟動線程
threadA.start();
}
/**
* 啟動一個ThreadB線程
*/
public void startB(){
Runnable tb = new ThreadB();
//用Runnable對象構造線程
Thread threadB = new Thread(tb);
threadB.start();
}
public static void main(String[] args) {
DefineThread test = new DefineThread();
//線程的運行具有不確定性,先啟動的線程不一定先運行,取決于虛擬機。
test.startA();
test.startB();
}
}
import java.util.Date;
public class DefineThread {
/**
* 通過繼承java.lang.Thread類定義線程
*/
class ThreadA extends Thread{
/** 線程被運行的時刻 */
private Date runDate;
/**
* 當線程被運行時調用此方法
*/
public void run(){
System.out.println("ThreadA begin,");
this.runDate = new Date();
System.out.println("ThreadA end.");
}
}
/**
* 通過實現java.lang.Runnable接口定義線程
*/
class ThreadB implements Runnable{
/** 線程被運行的時刻 */
private Date runDate;
public void run(){
System.out.println("ThreadB begin,");
this.runDate = new Date();
System.out.println("ThreadB end.");
}
}
/**
* 啟動一個ThreadA線程
*/
public void startA(){
Thread threadA = new ThreadA();
//調用Thread的start方法啟動線程
threadA.start();
}
/**
* 啟動一個ThreadB線程
*/
public void startB(){
Runnable tb = new ThreadB();
//用Runnable對象構造線程
Thread threadB = new Thread(tb);
threadB.start();
}
public static void main(String[] args) {
DefineThread test = new DefineThread();
//線程的運行具有不確定性,先啟動的線程不一定先運行,取決于虛擬機。
test.startA();
test.startB();
}
}
-- 學海無涯