• Java并发(四)多线程开销


    从单线程应用转变为多线程应用并不只是带来好处。这种转变也会带来一定得开销得。并不是所有时候都要把你的应用编程多线程的。你应该明白这样做确实会带来好处,而且这种好处要比开销大。如果你不确定的话,要试着去度量应用的性能或响应,而不是靠猜。

    更复杂的设计

    虽然某些多线程程序在设计上确实要比单线程应用简单,但是其它情况却会变得更复杂。在多线程中执行访问共享数据的代码需要特别注意。线程交互从来都不是那么简单。因为不正确的线程同步导致的错误很难排查,重现和解决。

    上下文切换开销

    当一个CPU从一个正在执行的线程切换到另一个线程的时候,CPU需要保存当前线程的局部数据,程序的指针等,然后会状态下一个要执行线程的局部数据和程序指针等。这种切换被称为"上下文切换"。CPU会从一个线程上下文中的执行切换到另一个线程上下文中执行。

    上下文切换没有看起来那么容易。只有在需要的时候才去切换上下文。

    你可以在维基百科上读到更多关于上下文切换的信息:

    http://en.wikipedia.org/wiki/Context_switch

    增加资源的消耗

    一个线程为了运行需要从计算机中获取一定的资源。除了CPU时间之外,一个线程需要一些内存来保存它的局部栈。而且还需要操作系统提供一些资源来管理这些线程。尝试去写一个创建了100个线程的程序,啥也不干就是干等着,看下应用在运行起来的时候会消耗多少内存。

  • 相关阅读:
    WSL中使用npm install报错
    在npm install时node-gyp出现错误
    Chrome禁用隐藏www和m
    Git始终忽略特定文件的某一行内容
    macOS关闭修改扩展名的提示
    解决安装Anaconda后ZSH中使用的依然是系统自带的Python
    macOS上更顺手的终端
    自用的越狱插件
    Tomcat安装后修改路径方法
    TestStack.White安装详解
  • 原文地址:https://www.cnblogs.com/tuhooo/p/9080913.html
Copyright © 2020-2023  润新知