Java线程学习
线程简介
一.线程概念
在理解线程之前,简单的讲解一下进程。所谓进程,简单的理解就是正在进行的一个程序,就像Windows系统上的.exe。进程是操作系统的执行单元,是一个运行实例。
线程(Thread)在有的地方又称“执行绪”,是进程内部一个控制流,是程序内部的调度单位。
充分理解“执行单位”与“调度单位”可以更形象的区分进程与线程,如下图所示:
一个线程可以完成一个或多个功能
一个进程可以存在一个或多个线程
多个线程总是共享同一进程的内存资源,进程内存资源由系统分配
一个进程至少有一个线程即主线程
在这里打个比方:有个污水处理池,有多根管道向里面输入污水,也有多根管道向外输出净水,整个过程就是把输入的污水变成净水。而这个过程好比“进程”,每一根管
道(不管是输入管道还是输出管道)就是一个线程。每一根输入管道来自不同的地方,每一根输出管道流向不同的用户,这就好比程序里不同线程处理不同的功能。每一根管道流量不同,耗时也不同,这就好比程序里线程占用CPU时间片不同。当在输入污水时,需要关闭输出管道,就这是我们所讲的“线程锁”;当在输出净水时,道理一样,而这一入一出好比程序里的同步问题。