目錄
- 相關概念
- 停止執行緒的方式
- 多執行緒的5種狀態
- join方法
相關概念
-
行程:啟動一個應用程式,就會開啟一個行程(微信,QQ,瀏覽器等等)
-
執行緒:程式的執行路徑
-
行程和執行緒的區別:行程是在作業系統下的并發,執行緒是在應用程式下的并發
-
多執行緒:在同一行程中開啟了多個不同的執行路徑,多個路徑同時執行
-
多執行緒好處:提高程式整體運行速度,快速回應
-
多執行緒的應用場景:
- 異步發送短信
- 異步記錄日志
- 對耗時代碼采用異步處理
-
CPU切換:
單核CPU:同一時刻只有一個執行緒可以作業,執行緒背景關系切換耗費資源
多核CPU:同一時刻多個執行緒同時作業,背景關系切換較少
-
多執行緒越多越好?
小型專案:使用多執行緒異步
大型專案:使用MQ代替多執行緒
-
用戶執行緒和守護執行緒的區別:
-
用戶執行緒當主執行緒停止后,用戶執行緒也會一直運行,thread.setDaemon(false);
-
而守護執行緒當我們主執行緒停止后,守護執行緒也會停止,thread.setDaemon(true);
-
停止執行緒的方式
建議采用變數的方式停止執行緒
public class Thread005 extends Thread {
private volatile boolean flag = true;
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
while (flag) {
}
}
public void stopThread() {
this.flag = false;
}
public static void main(String[] args) {
Thread005 thread005 = new Thread005();
thread005.start();
try {
Thread.sleep(3000);
thread005.stopThread();
} catch (Exception e) {
}
}
}
多執行緒的5種狀態
- 新建一個執行緒,new Thread的時候為新建的狀態
- 呼叫到start方法的時候,當前執行緒狀態為就緒狀態,需要等待cpu的切換,
- 當cpu切換能夠呼叫到該執行緒的時候,當前執行緒的狀態為運行狀態,
- 在執行緒呼叫sleep方法的時候,當前執行緒執行緒的狀態為阻塞狀態,當休眠的時候過了的時候有需要從新等待cpu調度,從就緒狀態到運行,
- 當執行緒呼叫stop方法或者run方法代碼執行結束的時候當前執行緒的狀態為死亡狀態,

join方法
當在主執行緒當中執行到t1.join()方法時,就認為主執行緒應該把執行權讓給t1
class Main
{
public static void main(String[] args) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i <10 ; i++) {
System.out.println("子執行緒...");
}
}
});
thread.start();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
for (int i = 0; i <10 ; i++) {
System.out.println("main執行緒.....");
}
System.out.println("主執行緒銷毀....");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/95071.html
標籤:Java
上一篇:執行緒安全&Java記憶體模型
