题目
Java 创建线程有几种方法
答案
@[toc] --- ## 继承 Thread 类 通过继承 Thread 类并重写 run() 方法,创建一个线程对象,调用 start() 方法启动线程。 示例代码: ```java class MyThread extends Thread { @Override public void run() { // 线程要执行的代码 } } MyThread thread = new MyThread(); thread.start(); ``` ## 实现 Runnable 接口 通过实现 Runnable 接口并实现 run() 方法,创建一个 Runnable 对象,将该对象作为参数传入 Thread 的构造方法中,创建一个线程对象,调用 start() 方法启动线程。 示例代码: ```java class MyRunnable implements Runnable { @Override public void run() { // 线程要执行的代码 } } MyRunnable runnable = new MyRunnable(); Thread thread = new Thread(runnable); thread.start(); ``` ## 实现 Callable 接口 通过实现 Callable 接口并实现 call() 方法,创建一个 Callable 对象,将该对象作为参数传入 FutureTask 的构造方法中,创建一个 FutureTask 对象,将 FutureTask 对象作为参数传入 Thread 的构造方法中,创建一个线程对象,调用 start() 方法启动线程。可以使用 FutureTask.get() 方法获取 call() 方法的返回值。 示例代码: ```java class MyCallable implements Callable<Integer> { @Override public Integer call() throws Exception { // 线程要执行的代码 return 1; } } MyCallable callable = new MyCallable(); FutureTask<Integer> futureTask = new FutureTask<>(callable); Thread thread = new Thread(futureTask); thread.start(); int result = futureTask.get(); ``` ## 使用 Executor 框架 通过 Executor 框架的工具类 Executors 来创建线程池,将任务提交给线程池执行。 示例代码: ```java ExecutorService executorService = Executors.newFixedThreadPool(5); executorService.execute(new Runnable() { @Override public void run() { // 线程要执行的代码 } }); executorService.shutdown(); ``` ## 使用线程池框架 Fork/Join 通过 Fork/Join 框架的工具类 ForkJoinPool 来创建线程池,将任务提交给线程池执行。 示例代码: ```java ForkJoinPool forkJoinPool = new ForkJoinPool(); forkJoinPool.execute(new Runnable() { @Override public void run() { // 线程要执行的代码 } }); forkJoinPool.shutdown(); ```