執行緒的常用方法
thread t =
newthread()
;
1. 啟動執行緒shart()
t.
stat()
;//啟動執行緒
2. 停止執行緒注意:不建議使用stop()和destory()方法(已過時),呼叫其可能會產生不可預料的結果;
執行緒停止有兩種情況:
例如:
class
terminal
implements
runnable
@override
public
void
run()}
//提供修改標識的方法
public
void
terminate()
}public
class
testterminal
system.out.
println
(thread.
currentthread()
.getname()
+"--->"
+ i);}
}}
執行結果:在main函式裡,當i==8時終止了子執行緒
3. 休眠執行緒sleep()
這裡要注意的有:
sleep()的應用:
例1:模擬龜兔賽跑,讓兔子每走十步休眠100ms;
public
class
testracer
implements
runnable
catch
(interruptedexception e)
} system.out.
println
(thread.
currentthread()
.getname()
+"-->"
+ steps)
;// 比賽是否結束
boolean flag =
gameover
(steps);if
(flag)}}
private
boolean
gameover
(int steps)
else
if(steps ==
100)
return
false;}
public
static
void
main
(string[
] args)
}
例2:模擬網上購票
class
sell
implements
runnable
//模擬延時
trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
.getname()
+ ticketnum++);}}}
例3:模擬倒計時
public
class
testblockedsleep01}}
public
static
void
test()
throws interruptedexception
}}
執行結果:
4. 執行緒讓步yield()
讓正在執行的執行緒停止或讓步,讓給優先順序較高的執行緒獲取cpu的執行權,不一定會讓出cpu執行權,取決於作業系統,若等待的執行緒優先順序較低或者當前只有乙個執行緒在執行時,那麼當前執行緒又會立即獲取到cpu的執行權
例1:
class
yield
implements
runnable
}public
class
testyield
}
一次執行結果:讓步成功
例2:主線程中i為2的倍數時,主線程呼叫yield();
ublic class
testyield02})
.start()
;for
(int i =
0;i <
5;i++
) system.out.
println
("main"
+ i);}
}}
5. 執行緒加入join()
例:
public
class
testjion})
; t.
start()
;for
(int i =
0;i <
10;i++
) system.out.
println
("main"
+ i);}
}}
結果:主線程阻塞後,子執行緒結束之後才得以繼續執行;
執行緒控制 join執行緒
在我們做專案的時候時常會有這樣的一種需求 我們需要執行兩個方法,乙個方法要等另乙個方法執行完才能執行,這樣的狀況放到多執行緒中要怎麼實現呢?今天就來看看多執行緒中的join方法。我們的均方法通常是把乙個大問題分成許多小問題,每個小問題分配乙個執行緒,當所有的小問題都得到處理後,在呼叫主線程來進一步操...
執行緒 之 執行緒控制
下面有幾種方法可以很好的控制線程的執行。1.join 執行緒控制 2.後台執行緒 守護執行緒 3.sleep執行緒睡眠 4.yield執行緒讓步 1.join 執行緒控制。thread提供了讓乙個執行緒等待另外乙個執行緒完成的方法 join 方法 意思 當在a程式執行流 執行緒 中呼叫b執行緒的ji...
執行緒控制函式
執行緒共享資源如下 靜態資料 程序中開啟的檔案描述符 當前工作目錄 使用者i d int pthread create pthread t thread,pthread attr t attr,void start routine void void arg 函式作用建立乙個執行緒 thread 執...