在上文中介绍了线程创建的三种方式,现在我们品一品线程状态。
一、并发与并行的区别
在介绍线程状态之前,先介绍并行、与并发的概念:
引用深入理解Java虚拟机中的原文
并行:指有多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态;
并发:指用户线程与垃圾收集线程同时执行(但不一定是并行,可能会发生交替执行),用户程序在继续执行,而垃圾收集程序运行于另一个CPU上;
品完上面对并行、并发的概念,我想用生活中的例子来阐述自己的理解
首先,要确定一个关键点:是否是可以同时执行
并行:吃饭和洗衣服同时执行;
并发:吃饭和洗衣服交替执行;
说人话来解释 并行指有(多个)CPU同时执行任务,并发多个任务被(一个)cpu 轮流切换着执行;
二、看图说话
2.1 线程的五种状态

Java中定义了五种线程状态,在任意的时间点,一个线程只能有且只有其中一种状态,在遇到特定事件发生的时候将会发生互相转换
**新建线程**:创建线程对象后尚未启动的线程;
**运行状态**:在这个状态中分为二种
a 具备Cpu执行资格;
b 具备Cpu执行权,当同时拥有这二种权限才会被执行;
**等待状态**:这个状态也是分为二种
a 无限期等待 (不会获得Cpu的执行权) 没有设置Timeout参数的Object.wait()、没有设置Timeout参数的Thread.join();
b 期限等待 (不会获得Cpu的执行权,但是在一定时间之后它们由系统自动唤醒) Thread.sleep()、设置Timeout参数的Thread.join()、设置Timeout参数的Object.wait();
**阻塞状态** :线程在等待着获取一个排他锁,这个事件在另一个线程放弃锁的时候发生;
**结束状态** :线程结束或者调用 stop()方法;
鄙人不才,在您面前献丑只愿与您结伴而行,文章若有不当之处,望大佬指点一二;如果我对您有帮助的话,还希望您能点赞分享,成长是一场苦涩的独自修行,我很需要您的陪伴与支持,这也是鄙人不断前行的根本动力,让我们在互相陪伴见证彼此生长的同时能够感染身边最亲近的人一同成长,鄙人在此叩谢!