線程的停止
//建議線程正常停止 --> 利用次數(shù),不建議死循環(huán)
//建議使用標(biāo)志位 --> 設(shè)置一個(gè) flag 標(biāo)志位
//不使用 stop 或 destroy 等過時(shí)方法
public class TestStop implements Runnable{
//1、設(shè)置一個(gè)標(biāo)志位
private boolean flag = true;
@Override
public void run() {
int i = 0;
while (flag) {
System.out.println("run..Thread" + i++);
}
}
//2、實(shí)在一個(gè)公開的方法停止線程,轉(zhuǎn)換標(biāo)志位
public void stop(){
this.flag = false;
}
public static void main(String[] args) {
TestStop testStop = new TestStop();
new Thread(testStop).start();
for (int i = 0; i < 100; i++) {
System.out.println("main" + i);
if (i == 90) {
testStop.stop();
System.out.println("線程停止了");
}
}
}
}
線程的休眠
//延時(shí)200ms
Thread.sleep(200);
線程的禮讓—— yield
比如有A,B兩個(gè)線程,如果在A運(yùn)行時(shí)進(jìn)行禮讓,此時(shí)A從運(yùn)行態(tài)轉(zhuǎn)為就緒態(tài),讓CPU重新調(diào)度;有可能禮讓成功,改為B運(yùn)行,也有可能失敗,仍是A在運(yùn)行。
thread.yield();
線程的強(qiáng)制執(zhí)行—— join
就是某線程是VIP,可以插隊(duì)運(yùn)行
thread.join();
線程的優(yōu)先級(jí)—— priority
優(yōu)先級(jí)越高的線程,所獲得的資源的就越多,有更大的可能性先執(zhí)行,而不是一定會(huì)先執(zhí)行,具體看CPU的調(diào)度。所以有可能出現(xiàn)低優(yōu)先級(jí)線程先執(zhí)行的情況,就是所謂的優(yōu)先級(jí)倒置,引起性能問題
注意:先設(shè)置優(yōu)先級(jí),再啟動(dòng);即優(yōu)先級(jí)的設(shè)定在start()調(diào)度之前
getPriority().setPriority(int xxx)