1. 程式人生 > 其它 >Java 多執行緒(Java.Thread)------執行緒狀態和執行緒方法

Java 多執行緒(Java.Thread)------執行緒狀態和執行緒方法

技術標籤:Java基礎

執行緒五大狀態

  • 建立狀態:Thread t=new Thread();執行緒物件一旦建立就進入到新生狀態(new)

  • 就緒狀態:呼叫start()方法時,執行緒進入就緒狀態,但不意味著立即排程執行

  • 阻塞狀態:當呼叫sleep、wait或同步鎖定時,執行緒進入阻塞狀態,就是程式碼不往下執行,阻塞事件解除後,重新進入就緒狀態,等待cpu排程執行

  • 執行狀態:進入執行狀態,執行緒才真正執行執行緒體的程式碼塊

  • 死亡狀態:執行緒中斷或者結束,一旦進入死亡狀態,就不能再次啟動

執行緒方法

  • setPriority(int newPriority):更改執行緒的優先順序
  • static void sleep(long millis):在指定的毫秒數內讓當前正在執行的執行緒休眠
  • void join():等待該執行緒終止
  • static void yield():停止當前正在執行的執行緒物件,並執行其他執行緒
  • void interrupt():中斷執行緒,一般不推薦
  • boolean isAlive():測試執行緒是否處於活動狀態
  • 停止執行緒的方法:不推薦使用JDK提供的stop()、destroy()方法,推薦執行緒自己停止下來,建議使用一個標誌位進行終止變數當flag=false,則終止執行緒執行
/*
1.建議執行緒正常停止---->利用次數,不不建議死迴圈
2.建議使用標誌位---->設定一個標誌位
3.不要使用stop或者destroy等過時或者JDK不建議使用的方法
*/
package www.bh.c.threadtest; public class ThreadStopTest implements Runnable{ //設定一個標識位 private boolean flag=true; @Override public void run() { int i=0; while (flag){ System.out.println("Thread---->"+i++); } } //設定一個公開的執行緒停止方法,轉換標識位
public void stop(){ this.flag=false; } public static void main(String[] args) { ThreadStopTest threadStopTest = new ThreadStopTest(); new Thread(threadStopTest).start(); for (int i = 0; i < 500; i++) { System.out.println("mian"+i); if (i==400){ //呼叫stop方法切換標誌位,讓執行緒停止 threadStopTest.stop(); System.out.println("Thread停止"); } } } }