进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。
线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是,同类的多个线程共享进程的堆和方法区资源。
进程是资源分配的最小单位,线程是CPU调度的最小单位。
进程大致分为 5 种状态
线程分为6个状态:
初识状态(new):新创建了一个线程对象,但还没有调用start()方法时。
运行状态(runnable):线程调度程序从可运行池中选择一个线程获得CPU时间片后,被选中线程进入的状态。这也是线程进入运行状态的唯一一种方式。
阻塞状态(blocked):阻塞状态是线程阻塞在进入synchronized关键字修饰的方法或代码块(获取锁)时的状态。
等待状态(waiting): 处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒,否则会处于无限期等待的状态。
超时等待状态(timed_waiting):处于这种状态的线程不会被分配CPU执行时间,不过无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒。
终止状态(terminated):当线程的run()方法完成时,或者主线程的main()方法完成时,我们就认为它终止了。