文章目录
线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。
并发和并行
- 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。
- 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
- 在一台处理器上"同时"处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群
多线程好处
提高cpu的利用率
单线程:
5 seconds reading file A
2 seconds processing file A
5 seconds reading file B
2 seconds processing file B
14 seconds total
多线程:
5 seconds reading file A
5 seconds reading file B + 2 seconds processing file A
2 seconds processing file B
12 seconds total
一般来说,在等待磁盘IO,网络IO或者等待用户输入时,CPU可以同时去处理其他任务。
更高效的响应
多线程技术使程序的响应速度更快 ,因为用户界面可以在进行其它工作的同时一直处于活动状态,不会
造成无法响应的现象。
公平使用CPU资源
当前没有进行处理的任务,可以将处理器时间让给其它任务;占用大量处理时间的任务,也可以定期将处理器时间让给其它任务;通过对CPU时间的划分,使得CPU时间片可以在多个线程之间切换,避免需要长时间处理的线程独占CPU,导致其它线程长时间等待。
多线程的代价
更复杂的设计
共享数据的读取,数据的安全性,线程之间的交互,线程的同步等;
上下文环境切换
线程切换,cpu需要保存本地数据、程序指针等内容;
更多的资源消耗
每个线程都需要内存维护自己的本地栈信息,操作系统也需要资源对线程进行管理维护;