Java线程创建方法总结


在Java中,创建线程可以通过以下几种方式实现:

1. 继承Thread类

通过创建一个新的类继承 java.lang.Thread 类,并覆盖其**run()**方法来定义线程执行的操作。 创建并启动线程的代码如下:

public class MyThread extends Thread {
    @Override
    public void run() {
        // 线程执行的代码
    }
}
MyThread myThread = new MyThread();
myThread.start();

2. 实现Runnable接口

创建一个类实现java.lang.Runnable接口,并实现其**run()**方法。 然后可以将Runnable实例传递给Thread类的构造器。创建并启动线程的代码如下:

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程执行的代码
    }
}
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();

3. 实现Callable接口

与Runnable类似,但Callable允许任务返回值,并且可以抛出异常。Callable任务需要借助FutureTask包装器来启动线程。 创建并启动线程的代码如下:

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class MyCallable implements Callable<Integer> {
    @Override
    public Integer call() throws Exception {
        // 线程执行的代码,返回值
        return 123;
    }
}
                            
MyCallable myCallable = new MyCallable();
FutureTask<Integer> futureTask = new FutureTask<>(myCallable);
Thread thread = new Thread(futureTask);
thread.start();
// 获取结果
Integer result = futureTask.get();

4. 使用Executor框架

Java通过java.util.concurrent包提供了一个更高级的线程池接口,允许你创建线程池来管理线程的创建和销毁。 创建并使用线程池的代码如下:

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
ExecutorService executor = Executors.newFixedThreadPool(10);
// 创建包含10个线程的线程池
executor.execute(new MyRunnable());
executor.shutdown(); 
// 关闭线程池