多线程的几种实现方式

在Java中,有三种方式来实现多线程,分别是:

1. 继承Thread类
先看一下Thread类的源码:
这里写图片描述
这里写图片描述
这里写图片描述
从源码可以看出,Thread类本质上是实现了Runnable接口的一个实例,启动线程的唯一方式就是通过Thread类的start()方法,start()方法是个native方法,它会启动一个新的线程,并执行run()方法。用这种方式启动线程,直接用自己的类继承Thread类,并重写他的run()方法就可以启动线程并执行自己定义的run()方法了。
2. 实现Runnable接口
由于Java不支持多继承,如果自己的类已经继承了其他类,那么启动线程就要实现Runnable接口并重写它的run()方法。
这里写图片描述
从源码中可以看出,Runnable接口从Java1.0就已经有了,它内部只有一个抽象方法run()。
3. 使用ExecutorService,Callable,Future实现带返回结果的多线程。
如果有这样的一个场景,需要让异步执行的线程在执行完成后返回一个值给当前的线程,当前的线程需要依赖这个值做一些其他的业务操作,这个时候就要用到如下带返回值的线程了。
这里写图片描述
再看一下Callable接口的源码:
这里写图片描述
可以看出,Callable接口是Java1.5开始出现的只有一个带返回值的call()方法。

上一篇:关于i++是不是原子操作的问题
下一篇:多线程的几种状态

猜你喜欢

转载自blog.csdn.net/lx_Frolf/article/details/82318736