从定义上来看:
--进程是具有一定独立功能的程序在某个数据集上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
--线程是进程的一个运行实体,是CPU分派和调度的基本单位,它是比进程更小的能独立运行的基本单位。但本身并不拥有任何系统资源,只有一点在运行中必不可少的资源,比如程序计数器,一组寄存器和栈。
从拥有资源角度来看:
--进程是资源拥有和分配的单位
--线程只能与同属于一个进程中的其他线程共享进程的资源。
从地址空间来看:
--进程有自己独立的地址空间。
--线程只能与同属于一个进程的其他线程共享进程的地址空间。
从逻辑角度来看:
多线程的意义在于在一个应用程序中,可以同时实现多个执行部分。而操作系统并没有将多个线程看成多个独立的应用来实现进程的调度、管理以及资源分配。
JVM启动的时候会有一个java.exe,该进程中至少一个线程负责java程序执行,而且这个线程运行的代码存在于main方法中,该线程称之为主线程。一个进程中至少有一个线程。