线程:
线程可以拥有自己的堆栈、程序计数器、局部变量,但不拥有系统资源,它与父进程的其他线程共享该进程拥有的全部资源。
线程的运行是独立的,它不知道进程中是否还有其他线程
线程的执行是抢占式的,当前运行的线程在任何时候都可能被挂起。
一个线程可以创建和撤销另一个线程,同一个进程中的多个线程可以并发执行。
多线程的优势
(1)进程之间不能共享内存,线程之间可以,提高了程序的运行效率。多线程共享一个进程虚拟空间,线程共享的环境有:进程代码段,进程的公有数据等。利用这些共享的数据,线程很容易实现相互之间的通信。
(2)系统创建进程需要为进程分配系统资源,而创建线程的代价小,因此使用多线程来实现多任务并发比多进程的效率高
(3)Java语言内置了多线程功能支持。
1.一个程序至少有一个进程,一个进程至少有一个线程
2.线程的划分尺度小于进程,多线程程序的并发性高
3.进程在执行过程中拥有独立的内存单元,而多线程是共享内存,线程很容易实现相互之间的通信
4.线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制
5.多线程并发执行效率高,因为创建线程的代价很小。
6.进程有自己的独立地址空间,线程共享进程中的数据。
7.多进程更健壮,多线程程序只要要给线程死掉了,整个进程就死掉了,而一个进程死掉不会对其他进程造成影响,因为进程有自己的独立的地址空间。
进程:并发执行的程序在执行过程中分配和管理资源的基本单位。
什么是程序的并发执行?
为了增强计算机系统的处理能力和提高资源利用率所采取的一种同时操作技术。程序的并发执行分为两种:(1)多道程序系统的程序执行环境变化所引起的多道程序的并发执行
(2)程序内的几个程序段之间的并行。