百天百题(1/100)Java创建线程的方式?

首先创建线程有四种种方式:

1.继承Thread类 

百天百题(1/100)Java创建线程的方式?_第1张图片

缺点:1.Java是不支持多继承的,所以我们不能在继承其他的类了

           2.不能通过线程池来此操作,每次创建一个线程都需要先创建一个类,创建和销毁线程对整体的资源开销是非常大的。

           3.每次启动一个线程都要去创建一个线程类来继承Thread,这样做的话,程序的耦合性会变高。

2.实现Runnable接口(推荐)

TIPS:通过实现Runnable接口创建线程的方式实际上不是创建一个线程的对象。但是可以理解为创建一个线程的任务,将这个任务作为参数扔到Thread的构造函数中去。最后调用start方法来启动线程。

百天百题(1/100)Java创建线程的方式?_第2张图片

优点:其实达到了解耦的效果,避免了代码重构带来的困难。节省资源,实现了线程的复用性。

以上两种方式都是拿不到返回线程的参数

3.实现Callable接口,并且结合Future实现(底层还是通过Runnable)

百天百题(1/100)Java创建线程的方式?_第3张图片

实现Callable接口并且指定泛型(需要什么类型就返回什么类型)

4.通过JDK自带的线程池Executors来创建对象

百天百题(1/100)Java创建线程的方式?_第4张图片

总结:创建线程的方式本质上是调用start方法,start方法继续调用run方法。

你可能感兴趣的:(百天百题,java)