Java多线程的创建方式

141 阅读1分钟

Java 多线程的创建方式主要有以下几种:

  1. 继承 Thread 类并重写 run() 方法
  2. 实现 Runnable 接口并实现 run() 方法
  3. 实现 Callable 接口并实现 call() 方法,通过 FutureTask 包装器来包装成 Thread 对象
  4. 使用 Executor 框架、线程池等方式创建线程

详细介绍如下,带你一起领悟一把~~~

1. 继承 Thread 类并重写 run() 方法

继承 Thread 类是最基本的创建线程方式,它需要重写 run() 方法,在该方法中实现线程的具体逻辑。

示例代码:

public class MyThread extends Thread {
    @Override
    public void run() {
        // 线程逻辑
        System.out.println("Thread running...");
    }
}

// 启动线程
MyThread thread = new MyThread();
thread.start();

2. 实现 Runnable 接口并实现 run() 方法

实现 Runnable 接口将线程逻辑从 Thread 类中分离出来,更加灵活。

示例代码:

public class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 线程逻辑
        System.out.println("Thread running...");
    }
}

// 启动线程
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
  1. 实现 Callable 接口并实现 call() 方法,通过 FutureTask 包装器来包装成 Thread 对象

实现 Callable 接口相较于 Runnable 接口的优点在于,它可以返回一个结果并抛出一个异常。

示例代码:

public class MyCallable implements Callable<String> {
    @Override
    public String call() throws Exception {
        // 线程逻辑
        Thread.sleep(1000);
        return "Thread finished.";
    }
}

// 启动线程
MyCallable myCallable = new MyCallable();
FutureTask<String> futureTask = new FutureTask<>(myCallable);
Thread thread = new Thread(futureTask);
thread.start();

// 获取线程返回结果
String result = futureTask.get();
System.out.println(result);

4. 使用 Executor 框架、线程池等方式创建线程

使用 Executor 框架创建线程可以更好地管理和控制线程的执行,提高程序的效率。

示例代码:

ExecutorService executor = Executors.newCachedThreadPool();
executor.execute(new Runnable() {
    @Override
    public void run() {
        // 线程逻辑
        System.out.println("Thread running...");
    }
});