java中创建线程的三种方式

java中线程创建的三种方式

  1. 什么是线程

进程:一段代码在特定数据集合上的一次运行活动,操作系统资源分配的基本单位。(换了个数据集合或者换了代码都不算是同一个进程)
线程:是进程中的一个实体,本身是不会独立存在的。是进程的一个执行路径,一个进程中至少有一个线程,进程的多个线程共享进程的资源。任务调度和执行的基本单位。
操作系统中大概是这样的:
java中创建线程的三种方式
在JVM中,这个图可以再细化一下,大概是这样的:
java中创建线程的三种方式
线程以CPU轮转(一般来说,还有其他的调度方式)的方式占用CPU,当时间片轮转到这个线程的时候,就拿到它自己的PC和栈资源,用于执行当前线程的代码。

  1. 线程创建与运行

Java中有三种线程创建方式:实现Runnable接口的run方法,继承Thread类并重写run方法,使用FutureTask方式。

  • 继承Thread类:
    java中创建线程的三种方式

  • 实现Runnable接口:
    java中创建线程的三种方式

  • FutureTask:

首先看一下关于FutureTask是个什么东西,可以参考这一篇博客:
https://blog.****.net/lbx1314ybfq/article/details/100677262

使用FutureTask异步任务创建线程:
java中创建线程的三种方式
另外,FutureTask也是唯一一个能够获取到返回值的方法。(线程池好像也是基于这个实现的)

参考资料:《Java并发编程之美》 by 翟陆续 薛宾田