您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關怎么在java中停止Thread,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。
1.sleep
sleep()使當前線程進入停滯狀態(阻塞當前線程),讓出CPU的使用,以留一定時間給其他線程執行
sleep休眠時不會釋放對象的鎖
public class SleepDemo { public static void main(String[] args) throws InterruptedException { Process process = new Process(); Thread thread = new Thread(process); thread.setName("線程Process"); thread.start(); for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + "-->" + i); //阻塞main線程,休眠一秒鐘 Thread.sleep(1000); } } } /** * 線程類 */ class Process implements Runnable { @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName() + "-->" + i); //休眠一秒鐘 try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }
2.join
在一個線程A中執行了線程B的join方法,則A會掛起,等待B執行完畢后再執行后續任務。
public static void main(String[] args){ Thread t1 = new Thread(); t1.start(); t1.join(); // 以下代碼會在t1執行完畢后打印 System.out.println("t1 finished"); }
3.yield
yield并不意味著退出和暫停,是讓步,告訴線程調度如果有人需要,可以先拿去,我過會再執行,沒人需要,我繼續執行。
調用yield的時候鎖并沒有被釋放。
package com.yield; public class YieldTest extends Thread { public YieldTest(String name) { super(name); } @Override public void run() { for (int i = 1; i <= 50; i++) { System.out.println("" + this.getName() + "-----" + i); // 當i為30時,該線程就會把CPU時間讓掉,讓其他或者自己的線程執行(也就是誰先搶到誰執行) if (i == 30) { this.yield(); } } } public static void main(String[] args) { YieldTest yt1 = new YieldTest("張三"); YieldTest yt2 = new YieldTest("李四"); yt1.start(); yt2.start(); } }
上述就是小編為大家分享的怎么在java中停止Thread了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。