讓乙個執行緒等待另乙個執行緒完成的方法:例如,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加鎖的...