线程是进程中的一个执行实体,用来描述进程的执行,负责指向包括在进程内部地址空间中的代码。
多线程是指同时存在几个执行体,按几个不同的执行线索共同工作的情况。
要用多线程的主要原因是运行过程中需要处理大量的IO操作或者需要有较多的等待时间,比如读写文件、视频图像的采集等。
- 在Java中一个应用可以包含多个线程,每个线程执行特定任务,可以与其它线程并发执行。
- 引入多线程的目标在于减少CPU空转时间,提供CPU的利用率,java多线程提供了一个编程模型隐藏CPU在多任务间切换的实现细节,不需要修改代码就可以实现跨多CPU、多核的处理器。
- 提高吞吐量,充分利用cpu资源,减少cpu空转时间。
- 伸缩性,可以通过CPU核数提升性能。使用多线程并不能提高硬件的性能。
多线程优点和缺点
- 在多任务中,各个进程需要分配各自独立的地址空间;多线程可共享相同的地址空间并且分享同一个进程。
- 进程间调用涉及的开销比线程通信多
- 线程间的切换成本比进程间切换的成本低
- 多线程缺点:设计更复杂,上下文切换开销,增加资源消耗