在創(chuàng)建java.lang.Thread類的一個實例時就會"誕生"一個新線程。Thread對象表示Java
解釋器中一個實際的線程,并作為控制和協(xié)調(diào)其執(zhí)行的一個句柄。利用Thread對象,可以啟動線程、
等待其完成、要求它睡眠一段時間,或者時中斷其活動。Thread類的構(gòu)造函數(shù)可接受線程應當在哪里
開始執(zhí)行等等有關(guān)的信息。從概念上說,我們只希望告訴它所要運行的方法,但是由于Java中不存在
方法指針(至少沒有這種意義的方法指針),因此我們并不能直接指定方法。與此不同,必須采取一種
迂回線路,即使用java.lang.Runnable接口來創(chuàng)建一個對象,此對象中包含一個“可運行”的方。
Runnable接口只定義了唯一的一個通用方法。
public interface Runnable {
abstract public void run();
}
每個線程的生命周期都始于執(zhí)行Runnable對象中的run()方法。此對象是傳遞給線程構(gòu)造函
數(shù)的“目標對象”。run()方法可以包含任何代碼、但它必須是公共的,不僅沒有任何實參,而且也沒
有返回值,另外不會拋出任何受查異常。
任何包含有合適的run()方法的類都可以聲明它實現(xiàn)了Runnable接口。此類的實例就是一個
可運行的對象,它可以作為一個線程的目標。如果不希望將run()直接放在對象中(而且通常不會這樣
做),則可以建立一個適配器類,由它作為一個Runnable類。適配器的run()方法則能夠在線程啟動
后調(diào)用任何需要的方法