多线程简介

作者: 程序员三千_ | 来源:发表于2019-02-20 10:33 被阅读0次

    进程和线程

    什么是进程?

    可以简单的认为一个应用程序就是一个进程,不过有些应用程序会启动多个进程,即一个应用程序至少会启动一个进程,在windos系统上面通过任务管理器可以查看计算机上正在启动的进程。

    进程和进程之间的内存是独立的,这样可以提高应用程序的稳定性和安全性。

    什么是线程?

    线程是进程中的一个执行场景,一个进程可以启动多个线程

    使用多线程的可以提高CPU的使用率,不是提高执行速度。

    比如一个程序要从本地硬盘中读取和处理文件,假设从硬盘读取一个文件要用6秒,处理一个文件用2秒,如果处理两个文件需要使用16秒:

    6秒读取文件A

    2秒处理文件A

    6秒读取文件B

    2秒处理文件B

    在磁盘读取文件时,CPU是在等待磁盘读取数据,此时CPU是空闲的,一秒钟的时间对于CPU来说可以做非常多的事情,可以利用这段空闲时间去做别的事情,来改变一下上面程序的操作顺序:

    6秒读取文件A

    6秒读取文件B + 2秒处理文件A(利用CPU空闲时间)

    2秒处理文件B

    这样一共需要14秒就可以完成上面操作

    这里其实是通过提高CPU的利用率来减少了操作时间

    线程和线程之间共享堆内存和方法区,栈内存是独立的,每个线程有自己独立的栈

    多线程的应用场景:

    qq多人视频

    迅雷同时下载多个文件

    并行和并发

    并行就是两个或两个以上的任务同时运行,就是甲任务进行的同时,乙任务也在进行。(需要多核CPU)

    并发是指两个或两个以上的任务都请求运行,而CPU只能接受一个任务,就把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行。

    多线程的缺点

    设计复杂

    多线程中共享堆内存和方法区,因此里面的一些数据是可以共享的,在设计时要确保数据的准确性

    资源消耗增多

    栈内存是不共享的,如果启用多个线程的话会占用更多的内存

    使用多线程可以提高CPU的使用率,但并不意味着线程越多越好,在编写程序时需要掌握好一个平衡点,这样才能够体现出多线程的价值。

    相关文章

      网友评论

        本文标题:多线程简介

        本文链接:https://www.haomeiwen.com/subject/dspcyqtx.html