新浪博客

多线程学习一:为什么要使用线程

2017-09-08 17:51阅读:
1、什么是线程 线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程。你可以通过使用多线程对运算密集的任务提速。比如,如果一个线程完成一个任务需要100毫秒,那么用十个线程完成此任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,他是一个很好的卖点。
2、线程和进程有什么区别
线程是进程的子集,一个进程可以拥有很多线程,每个线程并行执行不同的任务。不同的进程使用不同的内存空间,所有的线程共同享用相同的内存空间。别把它和栈内存搞混,每个线程都拥有独立的栈内存来存储本地数据。
3、为什么要使用线程
1)耗时的操作使用线程,提高应用程序的相应速度。
2)并行操作时使用线程,如C/S架构的服务器并发线程响应的请求。
3)多CPU系统中,使用线程提高CPU利用率。
4)改善程序结构,一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或者半独立的运行部分,这样的程序会利于理解和修改。
使用多线程的理由之一是和进程相比,它是一个非常花销小。切换快,更“节俭”的多任务操作方式。在linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段、数据段,这是一种“昂贵”的多任务工作方式。而运行于一个进程的多个线程,他们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于一个进程多花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需的时间。
使用多线程的理由之二是线程间方便的通信。对于不同的进程来说,他们具有独立的数据空间,要进行数据的传递只能通过通信的方式,这种方式不仅耗时,而且不方便。线程则不然,由于同一个进程下线程之间共享数据空间,所以一个线程的数据可以直接为其他线程所用,这不仅快捷,而且方便。当然数据的共享也带来一些问题,有的变量不能同时被两个线程所修改,有的子程序中声明的static的数据更有可能给多线程,这些正是编写多线程时需要注意的地方。

我的更多文章

下载客户端阅读体验更佳

APP专享