java中多线程的实现方式
Java中多线程的实现方式
1. 继承 Thread 类重写 run 方法
public class MyThread extends Thread {@Overridepublic void run() {System.out.println("继承Thread类");}public static void main(String[] args) {MyThread t = new MyThread();t.start();}
}
2. 实现 Runable 接口的 run 方法
public class MyRunnable implements Runnable {@Overridepublic void run() {System.out.println("实现Runnable接口");}public static void main(String[] args) {MyRunnable r = new MyRunnable();new Thread(r).start();}}
3. 通过 FutureTask 和 Callable,实现 Callable 接口的 call 方法,
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class MyCallable implements Callable<String> {@Overridepublic String call() {return "实现Callable接口的call方法!";}public static void main(String[] args) throws ExecutionException, InterruptedException {FutureTask<String> task = new FutureTask<>(new MyCallable());new Thread(task).start();System.out.println(task.get());}}
4. 通过线程池方式
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;public class MyExecutorService {public static void main(String[] args) {ExecutorService executor = Executors.newFixedThreadPool(2);executor.submit(() -> {System.out.println("通过线程池创建!");});// 关闭线程池executor.shutdown();}}
在oracle的官方文档中,其官方文档链接如下:https://docs.oracle.com/javase/8/docs/api/index.html
在jdk8中,很明确的表明了创建线程的方式只有两种,重点就是这句 There are two ways to create a new thread of execution. One is to declare a class to be a subclass of Thread . The other way to create a thread is to declare a class that implements the Runnable interface.
翻译过来的意思就是说:有两种方法可以创建一个新的执行线程。一种方法是将一个类声明为Thread的子类。另一种方法是声明一个实现Runnable 接口的类。
这是权威的官方文档说的,创建线程的方式只有两种。