多线程相关知识1:创建线程的方式

       最近在学习多线程相关的基础知识,参考了网上的一些知识,在此做个总结,如果有哪里说的不对的地方希望各位能指出,谢谢!

       首先对于线程的创建方式网上众说纷纭,有说2种的3种的4种的等等。在查阅了oracle官网的资料后这里先给出结论,创建线程的方式有2种。(参考文章地址:https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Thread.html

多线程相关知识1:创建线程的方式

多线程相关知识1:创建线程的方式

大致意思就是,创建线程的方式总共有2种,第一种是继承Thread类并重写run()方法,另一种方式创建线程是实现Runnable接口并且重写run()方法。

这两种方法的区别在于,方法一(继承Thread类)只是重写了Thread类的run()方法,而方法二(实现Runnable接口)则是传入一个Runnable对象,本质上这两种方式都是去调用了Thread类的构造函数去创建一个线程,即都是调用了new Thread()去创建线程。

至于网上说的一些其他方法,并不是说他们的说法是错误,例如通过线程池来创建线程,确实通过线程池可以创建线程,但是通过线程池的底层代码我们可以看出也是通过new Thread()。

多线程相关知识1:创建线程的方式

再看另一种说法通过定时器创建线程,确实可以创建出新的线程,但是底层代码可以很明显的看到TimerTask也是实现了。Runnable接口。其他的一些方法也类似。只不过是对核心代码的包装,方便开发者调用,本质都是一样的,万变不离其宗。

多线程相关知识1:创建线程的方式

OKOK,至此想说的都说完了,也许有说的不好的地方,还望大家指出。