- 浏览: 514806 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (563)
- 工作经验 (12)
- 数据库 (13)
- Servlet (10)
- Struts2 (1)
- Spring (25)
- Eclipse (5)
- Hibernate (5)
- Eclips (8)
- HTTP (7)
- J2EE (21)
- EHcache (1)
- HTML (11)
- 工具插件使用 (20)
- JPA (2)
- 杂谈 (17)
- 数据结构与算法 (3)
- Cloud Foundry (1)
- 安全 (10)
- J2SE (57)
- SQL (9)
- DB2 (6)
- 操作系统 (2)
- 设计模式 (1)
- 版本代码管理工具 (13)
- 面试 (10)
- 代码规范 (3)
- Tomcat (12)
- Ajax (5)
- 异常总结 (11)
- REST (2)
- 云 (2)
- RMI (3)
- SOA (1)
- Oracle (12)
- Javascript (20)
- jquery (7)
- JSP自定义标签 (2)
- 电脑知识 (5)
- 浏览器 (3)
- 正则表达式 (3)
- 建站解决问题 (38)
- 数据库设计 (3)
- git (16)
- log4j (1)
- 每天100行代码 (1)
- socket (0)
- java设计模式 耿祥义著 (0)
- Maven (14)
- ibatis (7)
- bug整理 (2)
- 邮件服务器 (8)
- Linux (32)
- TCP/IP协议 (5)
- java多线程并发 (7)
- IO (1)
- 网页小工具 (2)
- Flash (2)
- 爬虫 (1)
- CSS (6)
- JSON (1)
- 触发器 (1)
- java并发 (12)
- ajaxfileupload (1)
- js验证 (1)
- discuz (2)
- Mysql (14)
- jvm (2)
- MyBatis (10)
- POI (1)
- 金融 (1)
- VMWare (0)
- Redis (4)
- 性能测试 (2)
- PostgreSQL (1)
- 分布式 (2)
- Easy UI (1)
- C (1)
- 加密 (6)
- Node.js (1)
- 事务 (2)
- zookeeper (3)
- Spring MVC (2)
- 动态代理 (3)
- 日志 (2)
- 微信公众号 (2)
- IDEA (1)
- 保存他人遇到的问题 (1)
- webservice (11)
- memcached (3)
- nginx (6)
- 抓包 (1)
- java规范 (1)
- dubbo (3)
- xwiki (1)
- quartz (2)
- 数字证书 (1)
- spi (1)
- 学习编程 (6)
- dom4j (1)
- 计算机系统知识 (2)
- JAVA系统知识 (1)
- rpcf (1)
- 单元测试 (2)
- php (1)
- 内存泄漏cpu100%outofmemery (5)
- zero_copy (2)
- mac (3)
- hive (3)
- 分享资料整理 (0)
- 计算机网络 (1)
- 编写操作系统 (1)
- springboot (1)
最新评论
-
masuweng:
亦论一次OutOfMemoryError的定位与解错 -
变脸小伙:
引用[color=red][/color]百度推广中运用的技术 ...
Spring 3 mvc中返回pdf,json,xml等不同的view -
Vanillva:
不同之处是什么??
Mybatis中的like查询 -
thrillerzw:
转了。做个有理想的程序员
有理想的程序员必须知道的15件事 -
liujunhui1988:
觉得很有概括力
15 个必须知道的 Java 面试问题(2年工作经验)
源:http://ifeve.com/costs-of-multithreading/
评:
原文链接:http://tutorials.jenkov.com/java-concurrency/costs.html
作者:Jakob Jenkov 翻译:古圣昌 校对:欧振聪
从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。
设计更复杂
虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。
上下文切换的开销
当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。
上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。
你可以通过维基百科阅读更多的关于上下文切换相关的内容:
http://en.wikipedia.org/wiki/Context_switch
增加资源消耗
线程在运行的时候需要从计算机里面得到一些资源。除了CPU,线程还需要一些内存来维持它本地的堆栈。它也需要占用操作系统中一些资源来管理线程。我们可以尝试编写一个程序,让它创建100个线程,这些线程什么事情都不做,只是在等待,然后看看这个程序在运行的时候占用了多少内存。
(全文完)
--------------------------------------------------------------------------------
原创文章转载请注明出处:多线程的代价
支持本站::Pay For Your Wish
--------------------------------------------------------------------------------
评:
原文链接:http://tutorials.jenkov.com/java-concurrency/costs.html
作者:Jakob Jenkov 翻译:古圣昌 校对:欧振聪
从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。
设计更复杂
虽然有一些多线程应用程序比单线程的应用程序要简单,但其他的一般都更复杂。在多线程访问共享数据的时候,这部分代码需要特别的注意。线程之间的交互往往非常复杂。不正确的线程同步产生的错误非常难以被发现,并且重现以修复。
上下文切换的开销
当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程。
上下文切换并不廉价。如果没有必要,应该减少上下文切换的发生。
你可以通过维基百科阅读更多的关于上下文切换相关的内容:
http://en.wikipedia.org/wiki/Context_switch
增加资源消耗
线程在运行的时候需要从计算机里面得到一些资源。除了CPU,线程还需要一些内存来维持它本地的堆栈。它也需要占用操作系统中一些资源来管理线程。我们可以尝试编写一个程序,让它创建100个线程,这些线程什么事情都不做,只是在等待,然后看看这个程序在运行的时候占用了多少内存。
(全文完)
--------------------------------------------------------------------------------
原创文章转载请注明出处:多线程的代价
支持本站::Pay For Your Wish
--------------------------------------------------------------------------------
发表评论
-
自旋锁、排队自旋锁、MCS锁、CLH锁
2016-02-19 17:08 503源:http://coderbee.net/index.php ... -
java.util.concurrent.locks.LockSupport
2014-12-28 19:56 614源:http://my.oschina.net/readjav ... -
Spring线程池开发实战
2014-12-12 10:44 499源:http://blog.csdn.net/chszs/ar ... -
自旋锁(Spin lock) 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。 自
2014-11-05 10:36 632源:http://coderbee.net/index.php ... -
高并发无锁实现代码块只进入一次小技巧
2014-10-29 14:10 842源:http://kenwublog.com/conc ... -
Java偏向锁实现原理(Biased Locking)
2014-10-21 17:51 1296源:http://kenwublog.com/theory-o ... -
Java 6 JVM参数选项大全(中文版)
2014-10-21 17:51 643源:http://kenwublog.com/docs/jav ... -
Java轻量级锁原理详解(Lightweight Locking)
2014-10-21 17:50 677源:http://kenwublog.com/theo ... -
08.JAVA同步块
2014-01-09 21:03 0源:http://ifeve.com/synchronized ... -
07.线程安全及不可变性
2014-01-09 21:02 0源:07.线程安全及不可变性 评: 原文链接 作者:Jakob ... -
06.线程安全与共享资源
2014-01-09 21:02 0源:http://ifeve.com/thread-safet ... -
05.竞态条件与临界区
2014-01-09 21:01 0源:http://ifeve.com/race-conditi ... -
04.如何创建并运行java线程
2014-01-09 20:58 454源:http://ifeve.com/creating-and ... -
02.多线程的优点
2014-01-09 20:56 372源:http://ifeve.com/benefits/ 评: ... -
01.Java并发性和多线程介绍
2014-01-09 11:11 672源:http://ifeve.com/java-con ...
相关推荐
03.多线程的代价Going from a singlethreaded to a multithreaded application doesn't just
而如果在一个进程中用多线程,彼此之间使用相同的地址空间,共享数据,线程切换的代价很小。多编程并发在企业中开发显得尤为重要,本课程包含Windows多线程编程与C++11高并发编程,通过浅显易懂的代码与讲解,让你的...
在Windows操作系统中,多线程技术是程序设计中的重要概念,它允许应用程序同时执行多个不同的任务,从而提高系统的效率和响应速度。通过理解和掌握多线程技术,开发者可以编写出更加高效、并行处理能力更强的软件。...
这个插件特别强调了“不贴墙”和“多线程”两个特性,这意味着它不仅能够避免角色在寻路过程中贴近障碍物,还能通过多线程技术提升计算速度,提高整体性能。 首先,我们来深入理解一下A星寻路算法。A星算法基于...
在计算机科学领域,多线程是一种编程技术,它允许单个程序同时执行多个任务或子任务,从而提高程序的效率和响应性。特别是在Windows操作系统环境下,多线程被广泛应用于各种应用程序,包括用户界面响应、后台计算...
在VB(Visual Basic)编程中,多线程技术允许程序同时执行多个独立的任务,从而提高应用程序的效率和响应性。A*算法是一种广泛应用的路径搜索算法,尤其在游戏开发、地图导航等领域,用于找到两点之间的最短路径。在...
在iOS开发中,多线程是一项至关重要的技术,它能够帮助我们实现应用的高效运行,提升用户体验。"ios多线程demo"是一个示例项目,旨在帮助开发者理解并掌握iOS平台上的多线程编程。下面将详细介绍这个领域的关键知识...
在Windows操作系统中,线程是调度的基本单位,线程间的切换代价相对进程来说较小,因此多线程常用于实现并发操作。 二、VC++中的多线程支持 Microsoft Visual C++提供了丰富的多线程支持,主要通过以下两个库来实现...
Java中线程问问题描述,多线程的优势(进程线程区别): 1、进程之间不能共享内存,线程之间共享内存更容易,多线程可协作...2、创建进程进行资源分配的代价较创建线程要大得多,所以多线程在高并发环境中效率更高。
有些小伙伴跟小编讨论了python中使用多线程原理的问题,就聊到了关于python多线程的弊端问题,这点可能在使用的过程中大家会能感觉到。而且之前讲过的GIL也是对python多线程的一种限制。那么,我们为什么还要用多...
Java多线程是Java编程中一个重要的概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应速度。在理解多线程之前,我们首先需要了解基础概念:程序、进程和线程。 1. **程序**:程序是静态的代码集合,...
多线程 在计算机编程中,一个基本的概念就是同时对多个任务加以控制。许多程序设计问题都要求程序能够停下手头的工作,改为处理其他一些问题,再返回主进程。可以通过多种途径达到这个目的。最开始的时候,那些掌握...
多线程的优点与代价: 1. **优点**: - 资源利用率更好:多线程可以充分利用多核处理器的计算能力,提高程序的执行效率。 - 程序设计在某些情况下更简单:如在网络编程中,每个连接可以由一个独立的线程处理,简化...
在Windows操作系统中,多进程和多线程是两种并发执行的方式,它们对于系统资源的管理和程序的并行处理至关重要。VC++(Visual C++)作为Microsoft的开发工具,提供了丰富的支持来实现这两种并发模型。 首先,我们要...
总结来说,ProtoThread为Arduino等资源受限的平台提供了实现多任务处理的有效手段,通过巧妙地管理状态和循环,以最小的资源代价实现了类似多线程的运行机制。这对于需要在有限资源下实现复杂逻辑的嵌入式项目来说,...
在深入理解GBase8s的架构时,我们需要关注其进程和多线程结构,这是决定其性能和效率的关键因素。 传统的基于进程的数据库服务器在处理大量并发连接时会遇到问题。每个用户连接通常需要一个单独的进程来处理,这...