重新认知Java--线程、进程

线程、程序、进程:

进程:是程序的一次执行过程,是系统运行程序的基本单位
程序:是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码
线程:与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程

进程生命周期:

就绪:进程处于可执行的状态,只是CPU时间片还没有轮转到该进程,则该进程处于就绪状态。
执行:进程处于可执行的状态,且CPU时间片轮转到该进程,该进程正在执行代码,则该进程处于运行状态。
阻塞:进程不具备执行条件,正在等待某个事件的完成。

线程生命周期:

创建 :当线程被创建出来还没有被调用start()时候的状态
就绪 :当线程被调用了start(),且处于等待操作系统分配资源(如CPU)、等待IO连接、正在运行状态,即表示Running状态和Ready状态。
锁池:等待监视锁,这个时候线程被操作系统挂起。当进入synchronized块/方法或者在调用wait()被唤醒/超时之后重新进入synchronized块/方法,锁被其它线程占有,这个时候被操作系统挂起,状态为阻塞状态。阻塞状态的线程,即使调用interrupt()方法也不会改变其状态。
等待:无条件等待,当线程调用wait()/join()/LockSupport.park()不加超时时间的方法之后所处的状态,如果没有被唤醒或等待的线程没有结束,那么将一直等待,当前状态的线程不会被分配CPU资源和持有锁。
阻塞 :有条件的等待,当线程调用sleep(睡眠时间)/wait(等待时间)/join(等待时间)/ LockSupport.parkNanos(等待时间)/LockSupport.parkUntil(等待时间)方法之后所处的状态,在指定的时间没有被唤醒或者等待线程没有结束,会被系统自动唤醒,正常退出。
死亡:执行完了run()方法。

如有雷同,纯属巧合!

猜你喜欢

转载自blog.csdn.net/qq_39164603/article/details/111406520