Java中创建子线程的方法有以下几种:
- 继承Thread类:创建一个继承自Thread类的子类,重写run()方法,并调用子类的start()方法启动线程。
public class MyThread extends Thread { @Override public void run() { // 子线程的任务逻辑 } public static void main(String[] args) { MyThread thread = new MyThread(); thread.start(); } }
- 实现Runnable接口:创建一个实现了Runnable接口的类,实现run()方法,并将其作为参数传递给Thread类的构造方法中,然后调用start()方法启动线程。
public class MyRunnable implements Runnable { @Override public void run() { // 子线程的任务逻辑 } public static void main(String[] args) { MyRunnable runnable = new MyRunnable(); Thread thread = new Thread(runnable); thread.start(); } }
- 使用Callable和Future:创建一个实现了Callable接口的类,实现call()方法,并使用Executors类的newFixedThreadPool()方法创建一个线程池,将Callable对象提交给线程池执行,并通过Future对象获取返回结果。
import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class MyCallable implements Callable{ @Override public String call() throws Exception { // 子线程的任务逻辑 return "子线程的返回结果"; } public static void main(String[] args) { MyCallable callable = new MyCallable(); ExecutorService executorService = Executors.newFixedThreadPool(1); Future future = executorService.submit(callable); try { String result = future.get(); System.out.println("子线程的返回结果:" + result); } catch (Exception e) { e.printStackTrace(); } finally { executorService.shutdown(); } } }
这些方法都可以创建一个子线程并执行一些任务逻辑,具体使用哪种方法取决于需求和代码的结构。