在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()方法。
本文介绍了在Java中实现多线程的三种方式:继承Thread类、实现Runnable接口以及使用ExecutorService, Callable, Future实现带返回结果的多线程。详细讲解了每种方式的实现原理和适用场景。"
124664155,11345073,空间多组学技术:转化医学的新视角,"['生命科学', '医学研究', '纳米技术', '肿瘤学', '生物信息学']
6587

被折叠的 条评论
为什么被折叠?



