一、什么是进程

浏览器是一个进程,WPS是一个进程。

二、什么是线程

某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。

三、进程与线程的关系

一个进程可以包含一个或多个线程,但至少会有一个线程。

  1. ┌──────────┐
  2. Process
  3. │┌────────┐│
  4. ┌──────────┐││ Thread ││┌──────────┐
  5. Process ││└────────┘││Process
  6. │┌────────┐││┌────────┐││┌────────┐│
  7. ┌──────────┐││ Thread ││││ Thread ││││ Thread ││
  8. Process ││└────────┘││└────────┘││└────────┘│
  9. │┌────────┐││┌────────┐││┌────────┐││┌────────┐│
  10. ││ Thread ││││ Thread ││││ Thread ││││ Thread ││
  11. │└────────┘││└────────┘││└────────┘││└────────┘│
  12. └──────────┘└──────────┘└──────────┘└──────────┘
  13. ┌──────────────────────────────────────────────┐
  14. Operating System
  15. └──────────────────────────────────────────────┘

四、与Java的关系

一个Java程序实际上是一个JVM进程,JVM进程用一个主线程来执行main()方法,在main()方法内部,我们又可以启动多个线程。此外,JVM还有负责垃圾回收的其他工作线程等。

因此,对于大多数Java程序来说,我们说多任务,实际上是说如何使用多线程实现多任务。

参考

  1. 多线程基础 - 廖雪峰的官方网站