线程是进程内独立运行的一个单位,而进程他可以由一个或者多个线程组成,但是一个线程只能对应一个进程。
如何创建线程
创建线程有继承Thread类、实现Runnable接口或者通过Callable和Future创建线程三种方法,具体创建过程如下。 本文来源于公众号:【Java学习提升】 专注于Java领域技术分享,Java知识体系学习、分享面试经验,让我们结伴而行,共同成长!
1、继承Thread类
下面我们通过代码来看下继承Thread类创建线程的具体步骤:
首先我们需要定义一个类来集成Thread类,继承过后需要重写Thread类的run()方法,代码如下:
然后我们调用该线程类对象的start()方法来启动线程,代码如下:
运行结果如下:
2、实现Runnable接口
我们还可以通过实现Runnable接口来创建线程类,具体如下:
首先我们需要创建一个类来实现Runnable接口,同样我们也需要重写run()方法
然后我们创建Runnable实现类的对象,把这个实现类的对象作为Thread类的target对象来创建线程,最后得到的Thread类的对象才是真正的线程对象,运行start()方法来启动线程
结果如下:
3、通过Callable和Future创建线程
首先创建一个类实现Callable接口,并且重写call()方法
然后使用FutureTask来包装MyCallable对象,同样和上面一样把FutureTask类的对象作为Thread类的target对象来创建线程并用start()方法来启动。
通过上面的例子我们发现,已经不是重写run()方法而是重写call()方法,并且还能自定义返回值,另外还有一个值得注意的问题是FutureTask实际上是实现了Runnable类并且也继承了Future接口,很显然FutureTask具有这两者的双重特征。