使用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(); } }

使用Runnable接口:

创建一个实现了Runnable接口的类,并实现其run()方法来定义线程的任务逻辑。然后创建Thread实例,将该Runnable对象作为参数传递给Thread的构造函数,并调用start()方法启动线程。

class MyRunnable implements Runnable { public void run() { // 线程的任务逻辑 } } public class Main { public static void main(String[] args) { MyRunnable runnable = new MyRunnable(); Thread thread = new Thread(runnable); thread.start(); } }

使用Callable和Future:

创建一个实现了Callable接口的类,并实现其call()方法来定义线程的任务逻辑。然后通过创建ExecutorService实例来提交Callable任务,并使用Future对象获取线程执行结果。

import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; class MyCallable implements Callable { public Integer call() throws Exception { // 线程的任务逻辑 return 123; } } public class Main { public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); Callable callable = new MyCallable(); Future future = executor.submit(callable); Integer result = future.get(); System.out.println("Result: " + result); executor.shutdown(); } }

使用线程池:

创建一个ExecutorService线程池,然后将Runnable或Callable任务提交给线程池执行。

import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; class MyRunnable implements Runnable { public void run() { // 线程的任务逻辑 } } public class Main { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(5); Runnable runnable = new MyRunnable(); for (int i = 0; i < 10; i++) { executor.submit(runnable); } executor.shutdown(); } }

这些是常用的多线程实现方式,每种方式都有其适用的场景。你可以根据实际需求选择合适的方式来实现多线程。