进程与线程关系(JVM)

義往昔 1年前 ⋅ 715 阅读

网上有一副很经典的图可以让我们来理解进程和线程的关系:

下面这副图是一个双向多车道的道路图,假如我们把整条道路看成是一个“进程”的话,那么图中由白色虚线分隔开来的各个车道就是进程中的各个“线程”了。

这副图出自:http://www.blogjava.net/pengpenglin/archive/2008/09/02/226292.html 

一些说明:

  • 这些线程(车道)共享了进程(道路)的公共资源(土地资源)。
  • 这些线程(车道)必须依赖于进程(道路),也就是说,线程不能脱离于进程而存在(就像离开了道路,车道也就没有意义了)。
  • 这些线程(车道)之间可以并发执行(各个车道你走你的,我走我的),也可以互相同步(某些车道在交通灯亮时禁止继续前行或转弯,必须等待其它车道的车辆通行完毕)。
  • 这些线程(车道)之间依靠代码逻辑(交通灯)来控制运行,一旦代码逻辑控制有误(死锁,多个线程同时竞争唯一资源),那么线程将陷入混乱,无序之中。
  • 这些线程(车道)之间谁先运行是未知的,只有在线程刚好被分配到CPU时间片(交通灯变化)的那一刻才能知道。

 

线程的生存期

当安排执行一个线程后,这个线程会经历几个状态,包括:未启动,激活,睡眠状态等,如下图显示的线程的生存期:

 

https://blog.csdn.net/ghj1976/article/details/5481038

 


全部评论: 0

    我有话说: