注:此文为学习《疯狂Java讲义》的笔记,因此内容全部来自于该书中。
1.线程和进程
当一个程序进入内存运行时,变成一个进程。进程是处于运行过程中的程序,并且是具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位。
进程的特征:(1)独立性,进行是系统中独立存在的实体,可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。(2)动态性,是一个正在系统中活动的指令集合。(3)并发性,多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。
线程是进程的执行单元。一个进程可以有多个线程,一个线程必须有一个父进程。线程可以拥有堆栈、计数器和局部变量,但不能拥有系统资源。它与父进程的其他线程共享该进程拥有的全部资源。
线程是独立运行的,执行是抢占式。一个线程可以创建和撤销另外一个线程,同一个进程中的线程可以并发执行。
一个程序运行后至少有一个进程,一个进程里可以包含多个线程,至少包含一个线程。
2.多线程的优势
进程之间不能共享内存,线程之间共享内存非常容易。
系统创建进程时需要为该进程重新分配资源,但创建线程的代价小。使用多线程比使用多进程实现多任务并发更高。
Java语言内置了多线程功能的支持,简化了Java的多线程编程。