一個進程中可以包含一個或多個線程
一個線程就是一個程序內部的一條執行線索
在單線程中
程序代碼按調用順序依次往下執行
在這種情況下
當主函數調用了子函數
主函數必須等待子函數返回後才能繼續往下執行
不能實現兩段程序代碼同時交替運行的效果
如果要一程序中實現多段代碼同時交替運行
就需產生多個線程
並指定每個線程上所要運行的程序代碼段
這就是多線程
當程序啟動運行是就自動產生了一個線程
主函數main就是在這個線程上運行的
當不再產生新的線程時
程序就是單線程的
創建多線程有兩種方法
繼承Thread類和實現Runnable接口
一個java
lang
Thread類的對象代表一個線程
通過Thread類和它定義的對象
就可以獲得當前線程對象
獲取某一線程的名稱
實現多線程
可通過編寫一個繼承了Thread類的子類
子類要覆蓋Thread類中的run函數
在子類run函數中調用想在新線程上運行的程序代碼
啟動一個新的線程
不是直接調用Thread子類對象的run方法
而是調用Thread子類對象的start方法
Thread類對象的start方法將產生一個新的線程
並在該線程上運行該Thread類對象中的run方法
根據面向對象的多態性
在該線程上實際運行的是Thread子類對象的run方法
由於線程代碼段在run方法中
那麼該方法執行完後
線程也就相應的結束了
因而可以通過控制run方法中的循環條件來控制線程的終止
public class ThreadDemo {
public static void main(String args[]){
new TestThread()
start()
TestThread
thread
= new TestThread
()
TestThread thread
= new TestThread()
thread
start()
thread
start()
/*while(true){
System
out
println(
main thread is runing…
)
}
*/
}
}
class TestThread extends Thread {
public void run(){
while(true){
System
out
println(Thread
currentThread()
getName() +
is runing!!!
)
try {
Thread
sleep(
)
} catch (InterruptedException e) {
// TODO Auto
generated catch block
e
printStackTrace()
}
}
}
}
class TestThread
extends Thread {
public void run(){
while(true){
System
out
println(Thread
currentThread()
getName() +
is runing***
)
try {
Thread
sleep(
)
} catch (InterruptedException e) {
// TODO Auto
generated catch block
e
printStackTrace()
}
}
}
}
copy from book
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27409.html