• 48、多线程简介


    进程和线程

    什么是进程?
    可以简单的认为一个应用程序就是一个进程,不过有些应用程序会启动多个进程,即一个应用程序至少会启动一个进程,在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的使用率,但并不意味着线程越多越好,在编写程序时需要掌握好一个平衡点,这样才能够体现出多线程的价值。

  • 相关阅读:
    hadoop学习摘要
    尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
    sqlserver 2012 IDE中 Windows身份验证连接服务器报错 ,Login failed for user 'xxxAdministrator'. 原因: 找不到与提供的名称匹配的登录名。
    不重复随机数列生成算法
    异步和等待(async和await)
    mvc和mvvm的区别?
    Redis命令大全
    Java NIO 三大组件之 Buffer
    Java NIO 三大组件之 Channel
    Java NIO概述
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/10147780.html
Copyright © 2020-2023  润新知