Java是一門非常流行的編程語言,在企業中使用廣泛。在Java面試中,線程和線程池也是常常被考察的知識點。接下來就讓我們一起來看看線程和線程池的相關知識。
線程是Java中的一個重要概念,它使得程序能夠同時執行多個任務。在Java中可以通過繼承Thread類或實現Runnable接口來創建線程。以下是一個通過繼承Thread類實現的簡單的線程代碼示例:
class MyThread extends Thread { public void run() { System.out.println("這是一個新線程。"); } } public class Test { public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); System.out.println("這是主線程。"); } }
上述代碼中,MyThread類繼承了Thread類,并覆蓋了它的run()方法。在run()方法中輸出了一句話。在main()方法中,我們創建了MyThread的實例,通過調用start()方法來啟動線程。執行start()方法后,新線程開始執行,同時主線程也繼續執行。
除了使用線程來實現并發,線程池也是常被使用的一種并發方式。線程池是一種可以預先創建一定數量的線程,在需要時直接使用的技術。Java中的線程池是通過ThreadPoolExecutor類實現的。以下是一個簡單的代碼示例:
ExecutorService pool = Executors.newFixedThreadPool(5); for (int i = 0; i < 10; i++) { pool.execute(new Runnable() { public void run() { System.out.println("當前線程:" + Thread.currentThread().getName()); } }); } pool.shutdown();
上述代碼中,我們創建了一個大小為5的線程池。接著我們創建了10個Runnable對象,通過調用execute()方法來提交任務。每個任務中都輸出了當前線程的名稱。執行完10個任務后,我們調用了shutdown()方法來關閉線程池。shutdown()方法不會立即中斷正在執行的任務,而是等待已提交的任務執行完畢后再關閉線程池。