线程、程序、进程的基本概念
-
线程与进程相似,但线程是一个比进程更小的执行单位。
-
一个进程在其执行的过程中可以产生多个线程。
-
与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。
-
程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
-
进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。
线程的基本状态
6 种不同状态的其中一个状态
Java 线程状态变迁
-
线程创建之后它将处于 NEW(新建) 状态
-
调用 start() 方法后开始运行
-
线程这时候处于 READY(可运行) 状态。
-
可运行状态的线程获得了 cpu 时间片(timeslice)后就处于 RUNNING(运行) 状态。
-
当线程执行 wait()方法之后,线程进入 WAITING(等待) 状态。
-
进入等待状态的线程需要依靠其他线程的通知才能够返回到运行状态,而 TIME_WAITING(超时等待) 状态相当于在等待状态的基础上增加了超时限制,比如通过 sleep(long millis)方法或 wait(long millis)方法可以将 Java 线程置于 TIMED WAITING 状态。
-
当超时时间到达后 Java 线程将会返回到 RUNNABLE 状态。
-
当线程调用同步方法时,在没有获取到锁的情况下,线程将会进入到 BLOCKED(阻塞) 状态。
-
线程在执行 Runnable 的run()方法之后将会进入到 TERMINATED(终止) 状态。
评论区