程序 執行緒
程序(Process):
程序是計算機中正在執行的程式的例項。在Java中,每個Java應用程式都執行在其自己的Java虛擬機器(JVM)例項中,每個JVM例項都是一個程序。程序擁有自己的記憶體空間、資源和執行環境,它們彼此獨立,相互之間不會干擾。
執行緒(Thread):
執行緒是程序內的執行單元,一個程序可以包含多個執行緒。執行緒共享同一程序的記憶體空間和資源,但每個執行緒擁有自己的執行路徑。在Java中,可以透過建立Thread類的例項或實現Runnable介面來建立執行緒。執行緒使得程式可以併發執行多個任務,提高了程式的效率和響應性;
執行緒建立的三種方式:
繼承Thread類:
可以建立一個繼承自Thread類的子類,並重寫其run()方法來定義執行緒的執行邏輯。然後透過建立該子類的例項並呼叫start()方法來啟動執行緒。
class MyThread extends Thread { public void run() { // 執行緒的執行邏輯 } }
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread(); //建立執行緒物件
thread.start(); //呼叫start方法開啟執行緒
}
}
實現Runnable介面(推薦使用):
可以建立一個實現了Runnable介面的類,並實現其run()方法來定義執行緒的執行邏輯。然後透過建立該類的例項,並將其作為引數傳遞給Thread類的構造方法來建立執行緒。 方便同一個物件被多個執行緒使用;
class MyRunnable implements Runnable { public void run() { // 執行緒的執行邏輯 } }
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable(); //建立runnbale介面的實現類物件
Thread thread = new Thread(myRunnable); //建立執行緒物件,透過執行緒物件來開啟我們的執行緒,代理
thread.start(); //呼叫執行緒
}
}
實現Callable介面(瞭解):
使用Callable介面建立執行緒需要配合ExecutorService來實現執行緒的管理和執行。
public class MyCallable implements Callable<String> { public String call() { return "Hello, Callable!"; } } public class Main { public static void main(String[] args) throws ExecutionException, InterruptedException { //建立執行服務: ExecutorService ser = Executors.newFixedThreadPool( 3); //3個執行緒 //提交執行 Future<String> r1 =ser.submit(new MyCallable()); //獲取結果 String aa = r1.get(); System.out.println(aa); //關閉服務 ser.shutdownNow(); } }