zoukankan      html  css  js  c++  java
  • Java并发(四)多线程开销

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

    更复杂的设计

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

    上下文切换开销

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

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

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

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

    增加资源的消耗

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

  • 相关阅读:
    【树形DP】ZJOI2008 骑士
    【博弈论】CF 1215D Ticket Game
    【状态压缩DP】HDU 4352 XHXJ'S LIS
    【纯水题】CF 833A The Meaningless Game
    【不知道怎么分类】NOIP2016 蚯蚓
    【状态压缩DP】SCOI2009 围豆豆
    操作系统总结
    概率问题总结
    C++虚函数原理
    一些baidu面经
  • 原文地址:https://www.cnblogs.com/tuhooo/p/9080913.html
Copyright © 2011-2022 走看看