在Java中,创建线程的方式有多种,包括继承Thread类、实现Runnable接口、使用Executor框架、使用Callable和Future等。
1. 继承Thread类
通过继承Thread类并重写run()方法来创建线程。
代码如下:
public class MyThread extends Thread {@Overridepublic void run() {System.out.println("Thread running: " + Thread.currentThread().getName());}public static void main(String[] args) {MyThread thread = new MyThread();thread.start();}
}
2.实现Runnable接口
实现Runnable接口并实现run()方法来创建线程,更灵活,可以继承其他类。
代码如下:
public class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("Thread running: " + Thread.currentThread().getName());}public static void main(String[] args) {Thread thread = new Thread(new MyRunnable());thread.start();}
}
3. 使用Executor框架
通过Executor框架创建线程池,提交任务执行。
代码如下:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class ExecutorExample {public static void main(String[] args) {ExecutorService executor = Executors.newFixedThreadPool(2);executor.submit(() -> {System.out.println("Task 1" + Thread.currentThread().getName());});executor.submit(() -> {System.out.println("Task 2" + Thread.currentThread().getName());});executor.shutdown();}
}
4. 使用Callable和Future
通过实现Callable接口并结合Future来创建带返回值的线程。
代码如下:
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;public class CallableExample {public static void main(String[] args) throws Exception {ExecutorService executor = Executors.newFixedThreadPool(1);Callable<Integer> task = () -> {return 42;};Future<Integer> future = executor.submit(task);System.out.println("Task result: " + future.get());executor.shutdown();}
}