Java 是一種流行的編程語(yǔ)言,常用于開(kāi)發(fā)各種應(yīng)用程序。在 Java 中,線程是一個(gè)關(guān)鍵概念,它可以讓程序同時(shí)執(zhí)行多個(gè)任務(wù)。Java 中的線程可以分為單線程和多線程,下面分別介紹它們的概念和例子。
單線程
單線程是指程序只能順序執(zhí)行一個(gè)任務(wù),不能同時(shí)執(zhí)行多個(gè)任務(wù)。例如,下面的代碼演示了單線程的運(yùn)行方式:
public class SingleThreadExample { public static void main(String[] args) { System.out.println("任務(wù)1開(kāi)始"); task1(); System.out.println("任務(wù)1結(jié)束"); System.out.println("任務(wù)2開(kāi)始"); task2(); System.out.println("任務(wù)2結(jié)束"); System.out.println("程序結(jié)束"); } public static void task1() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("任務(wù)1執(zhí)行中..."); } public static void task2() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("任務(wù)2執(zhí)行中..."); } }
運(yùn)行這個(gè)程序后,打印的結(jié)果為:
任務(wù)1開(kāi)始 任務(wù)1執(zhí)行中... 任務(wù)1結(jié)束 任務(wù)2開(kāi)始 任務(wù)2執(zhí)行中... 任務(wù)2結(jié)束 程序結(jié)束
可以看到,程序按照順序執(zhí)行了任務(wù)1和任務(wù)2。
多線程
多線程是指程序可以同時(shí)執(zhí)行多個(gè)任務(wù),每個(gè)任務(wù)對(duì)應(yīng)一個(gè)獨(dú)立的線程。例如,下面的代碼演示了多線程的運(yùn)行方式:
public class MultiThreadExample { public static void main(String[] args) { Thread thread1 = new Thread(() ->{ System.out.println("任務(wù)1開(kāi)始"); task1(); System.out.println("任務(wù)1結(jié)束"); }); Thread thread2 = new Thread(() ->{ System.out.println("任務(wù)2開(kāi)始"); task2(); System.out.println("任務(wù)2結(jié)束"); }); thread1.start(); thread2.start(); System.out.println("程序結(jié)束"); } public static void task1() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("任務(wù)1執(zhí)行中..."); } public static void task2() { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("任務(wù)2執(zhí)行中..."); } }
運(yùn)行這個(gè)程序后,打印的結(jié)果為:
程序結(jié)束 任務(wù)1開(kāi)始 任務(wù)2開(kāi)始 任務(wù)1執(zhí)行中... 任務(wù)2執(zhí)行中... 任務(wù)1結(jié)束 任務(wù)2結(jié)束
可以看到,程序同時(shí)執(zhí)行了任務(wù)1和任務(wù)2,而且它們的執(zhí)行順序是不確定的。