Java有几种方式来创建线程执行任务?
- 继承Thread类
Thread thread = new Thread();
thread.start();
我们重写的是run()方法,而不是start()方法,同时继承Thread类的方式有一个缺点就是单继承。
- 实现Runnable接口
Thread thread = new Thread(new ExampleThread());
thread.start();
当然这种创建线程的方式往往也可以通过lambda表达式简写实现。
- 实现Callable接口
FutureTask<String> futureTask = new FutureTask<>(new ExampleThread());
Thread thread = new Thread(futureTask);
thread.start();
String result = futureTask.get();
System.out.println(result);
通过futureTask对象获取返回的结果。
- 利用线程池来创建线程
ExecutorService executorService = Executors.newFixedThreadPool(10);
executorService.execute(new ExampleThread());
这种通过Executors去创建线程的方法不太推荐。
总结:
- 类与类之间是单继承
- 接口与接口之间可以多实现
- 上面创建线程的四种方式的底层原理还是通过实现Runnable接口来完成线程创建的