控制線程的常用方法

2021-08-26 09:47:14 字數 1482 閱讀 2097

讓乙個執行緒等待另乙個執行緒完成的方法:例如,main執行緒中呼叫a執行緒的join方法後,那麼在a執行緒結束後,main才會繼續執行(如果還有其他執行緒,其他執行緒與她兩無關)。

public static void main(string args) throws interruptedexception 

}});

thread.start();

thread.join();//如果不加這一句,就是交叉執行

system.out.println("子執行緒完了");

for (int i = 0; i < 100; i++)

}

執行結果:

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-zvhlfkgw-1575043286885)(

public static void main(string args)  catch (interruptedexception e) }}

});thread.start();

可以設定為後台執行緒

system.out.println("主線程停止了");

}

執行結果

執行緒睡眠使當前執行緒進入阻塞,放棄cpu資源。具體使用見上面**。

和sleep類似,但又有區別。都可以暫停執行緒,但是yield,強制執行緒進入就緒狀態,且只有優先順序不低於他的才能獲得執行機會。更詳細區別如下:

1).執行緒優先順序越高的,機會越多。比如,三個執行緒start,他們都輸出自己的名字,那麼在相同時間內,優先順序最高那個輸出的名字是最多的。

2).設定和獲取優先順序:setproperty(int n)、getproperty(int n);

3).優先順序具體有哪些:上面的n在【1,10】,但一般用常量:thread.max_priority、thread.norm_priority(main執行緒和預設建立時候的優先順序)、thread.min_priority

**

public static void main(string args)  catch (interruptedexception e) }}

});thread threadmin=new thread(new runnable() catch (interruptedexception e) }}

});threadmax.setpriority(thread.max_priority);

threadmin.setpriority(thread.min_priority);

threadmax.start();

threadmin.start();

控制線程的方法

控制線程的方法有join sleep 休眠 yield 讓步 suspend 掛起 resume 恢復 簡單的測試下sleep 和yield 並說明執行緒在這兩種狀態下對cpu的持有狀態和對同步鎖的持有狀態 在這裡不貼出程式執行的結果,大家可以根據 在自己的機器上跑一 會一下我接下來要闡述的,這要看...

控制線程同步的方法

控制同步的方法 已過時 加鎖 synchronized 互斥鎖 缺點 併發效率低下 synchronized synchronized obj 對obj加鎖的同步 塊 只有拿到obj鎖標記的執行緒,才能進入對obj加鎖的同步 塊 public synchronized void m 對this加鎖的...

控制線程同步的方法

控制同步的方法 已過時 加鎖 synchronized 互斥鎖 缺點 併發效率低下 synchronized synchronized obj 對obj加鎖的同步 塊 只有拿到obj鎖標記的執行緒,才能進入對obj加鎖的同步 塊 public synchronized void m 對this加鎖的...