Skip to content

Java 基础文章

是大法师对方的

傻大个开始的咪咕爱看

java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;

public class ThreadCreateDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        // 1. 继承 Thread 类
        Thread t1 = new Thread() {
            @Override
            public void run() {
                System.out.println("1. 继承 Thread: " + Thread.currentThread().getName());
            }
        };

        // 2. 实现 Runnable 接口(推荐,因为单继承限制)
        Runnable task = () -> System.out.println("2. 实现 Runnable: " + Thread.currentThread().getName());
        Thread t2 = new Thread(task);

        // 3. 实现 Callable 接口(带返回值,支持抛异常)
        Callable<String> callable = () -> {
            Thread.sleep(100);
            return "3. Callable 返回值: " + Thread.currentThread().getName();
        };
        FutureTask<String> futureTask = new FutureTask<>(callable);
        Thread t3 = new Thread(futureTask);

        // 4. 使用线程池(重点,实际项目最常用)
        Thread t4 = new Thread(() -> System.out.println("4. 线程池通常替代手动 new"));

        t1.start();
        t2.start();
        t3.start();
        t4.start();

        // 获取 Callable 的返回结果(会阻塞主线程)
        System.out.println(futureTask.get());
    }
}

用文字记录成长,用代码创造价值。