實現Runnable接口
作為一個定義Thread的新子類的方案我們可以在一個類中實現Runnable接口你會
//Set thereads as Daemon
firstrsetDaemon(true);
secondsetDaemon(true);
thirdsetDaemon(true);
Systemoutprintln(Press Enter when you have had enough\n);
firststart(); // Start the first thread
secondstart(); // Start the second thread
thirdstart(); // Start the third thread
try
{
Systeminread(); // Wait until Enter key pressed
Systemoutprintln(Enter pressed\n);
}
catch (IOException e) // Handle IO exception
{
Systemoutprintln(e); // Output the exception
}
Systemoutprintln(Ending main());
return;
}
}
如何工作
在這個類中有與前例相同的數據成員構造函數幾乎與前例相同在這個類的構造函數中我們不能調用setDamon()因為我們的類不是由Thread類派生的取而代之的是我們在創建代表線程的對象後在main()方法中需要做這些Run()方法的實現也非常相似我們的類沒有sleep()成員但因為它是Thread類的pubtlC Static成員通過使用類名在我們的run()方法只能夠可以調用它
在main()方法我們仍然為每個執行線程創建一個Thread對象但這次我們使用的構造函數接受一個Runnable類的對象我們傳遞JumhleNames類的一個對象給它因為我們的類實現Runnable所以是可行的
線程名
線程有一個名字在例子中我們使用的Thread構造函數將是一個帶一個序號的 Thread* 串組成的默認名如果你想為一個線程選擇你自己的名字構造函數接收一個String對象指定你想分配給該線程的名字例如我們用下句創建一個Thread對象first:
Thread first=new Thread(new JumbleNames(HopalongcassidyL)
firstThread);
這句為線程起名為firstThread注意這個名字只用於顯示有關線程信息它與Thread對象的標識符無關並且除了通常意義之外不會阻止若干線程起相同的名字
通過對Thread對象調用getName()方法你可以獲取分配給線程的名字線程的名字作為一個string對象返回通過調用Thread類中定義的setName()方法向它傳遞一個tring對象你也可以改變一個線程的名字
我們一旦在例子中創建三個Thread對象我們可以對每個線程調用setDaemon()方法main()中剩余部分俄與前例中原來版本一樣並且當你運行程序的這個版本時應能得到相同的輸出
Java入門經典在線教程完整版
[] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27760.html