更新時間:2023年05月12日10時42分 來源:傳智教育 瀏覽次數(shù):
Java中用到的線程調(diào)度算法是搶占式調(diào)度算法。搶占式調(diào)度算法指的是操作系統(tǒng)可以隨時中斷當(dāng)前執(zhí)行的線程,并將CPU分配給其他可運行的線程,以達到最大化CPU利用率和系統(tǒng)響應(yīng)速度的目的。
在Java中,可以使用Thread類來創(chuàng)建并啟動線程。下面是一個簡單的示例代碼,其中創(chuàng)建了兩個線程并啟動它們,它們會交替執(zhí)行:
public class ThreadDemo { public static void main(String[] args) { Thread t1 = new MyThread("Thread 1"); Thread t2 = new MyThread("Thread 2"); t1.start(); t2.start(); } static class MyThread extends Thread { private String name; public MyThread(String name) { this.name = name; } public void run() { for (int i = 0; i < 5; i++) { System.out.println(name + " is running"); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } } }
在這個示例中,我們定義了一個MyThread類,它繼承自Thread類,并實現(xiàn)了run方法。在run方法中,我們打印線程的名字,并讓線程睡眠1秒鐘,然后再次執(zhí)行,以便讓兩個線程交替運行。
在main方法中,我們創(chuàng)建了兩個MyThread對象,并將它們分別命名為"Thread 1"和"Thread 2"。然后我們調(diào)用了start方法來啟動它們。這將導(dǎo)致 JVM 創(chuàng)建兩個操作系統(tǒng)線程,并讓它們開始運行。由于Java使用的是搶占式調(diào)度算法,因此這兩個線程將交替運行,直到它們完成為止。
需要注意的是,雖然我們可以在run方法中使用sleep方法來模擬線程執(zhí)行的時間,但在實際的生產(chǎn)環(huán)境中,線程的運行時間是無法確定的,并且線程之間的競爭條件可能會導(dǎo)致不同的執(zhí)行結(jié)果。因此,在編寫多線程應(yīng)用程序時,需要格外小心,以確保線程安全和正確性。