从概念上:
进程:一个程序对一个数据集的动态执行过程,是分配资源的基本单位。
线程:一个进程内的基本调度单位。
线程的划分尺度小于进程,一个进程包含一个或者更多的线程。
从执行过程中来看:
进程:拥有独立的内存单元,而多个线程共享内存,从而提高了应用程序的运行效率。
线程:每一个独立的线程,都有一个程序运行的入口、顺序执行序列、和程序的出口。但是线程不能够独立的执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看:(重要区别)
多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但是,操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理及资源分配。 

另一种: 

进程是程序的一次执行,而什么是线程呢?线程可以理解为进程中执行的一段程序片段。在一个多任务环境下面的概念可以帮助我们理解两者之间的差别。

进程间是独立的,这表现在内存空间,上下文环境上;线程运行在进程空间内。

一般来讲,进程无法突破进程边界存取其他进程内的存储空间;而线程由于处在进程的存储空间内,所以同一个进程所产生的线程共享同一内存空间。

同一进程中的两段代码不能同时执行,除非引入线程。线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。线程占用的资源要少于进程占用的资源。进程和线程都可以有优先级。