java多线程-3-使用多线程的时机
许多人对于计算机的运行原理不了解,甚至根本不了解。
不幸的是,此类中的一部分人也参与了计算机的编码工作。可想而知,编写的效率和结果。听者伤心,闻者流泪。
此类同学的常见的误解:
- 并发就能加快任务完成
- 任务的总完成时间大约=单线程理论完成时间/线程个数
实际情况,和误解不同。
为何,主要因为以下几个因素:
1.计算机的配置
2.管理成本
3.任务性质
配置
每台计算器的配置都是有限的。譬如cpu可能是intel i9,或者i7,差的可能是i5,甚至更糟糕;而磁盘可能是老式的5400转的机械硬盘,或者是更快的
SSD。
不同的配置,决定了计算机每秒所能完成的任务数(计算次数),如果超过了配置,那么它也是无法完成的。
譬如有cpu,一秒只能执行500个计算。有1000万个运算的任务,以10000个一组,分为1000组(线程),在一秒内就可以完成吗?显然不是。
管理成本
操作系统创建线程,是需要耗费资源:存储空间。这些空间用于存储线程/进程信息。另外调度本身也是需要耗费时间的。
管理所耗费的时间,无形中也会减少可以实际用于计算的时间。
当然,在cpu足够强大,且线程不是很多的时候,可能不是一个大问题。
任务性质
不是什么任务都适合并发执行的。
譬如一个任务主要进行I/O,那么力图通过不合理的并发来提升效率是不可行。
又譬如力图从一个很慢的网站快速下载资源是很困难的,无论你增加了多少线程。
所以,在决定是否使用多任务之前,一定要仔细考虑该任务是否允许在特定的环境下使用。
如果不允许,还是老老实实地单发,或者把并发度设置为1。
只可惜,有许多初级程序员,或者一些没有啥理论的程序员不知道这些道理。
java多线程-3-使用多线程的时机的更多相关文章
- (原创)JAVA多线程一传统多线程
一,多线程 多线程是提高程序效率,避免资源浪费的很好的解决方案,下面来慢慢的介绍多线程的一些基本知识,而这些是晋级高级不可或缺的一部分 1,Thread类 类实现多线程需要实现Runnable接口,我 ...
- Java学习手记2——多线程
一.线程的概念 CPU执行程序,就好比一个人在干事情一样,同一个时间你只能做一件事情,但是这样的效率实在是太低了,在你用电脑的时候,听歌就不能浏览网页,看电影就不能下载视频,你想想是不是很蛋疼. 所以 ...
- java 并发性和多线程 -- 读感 (一 线程的基本概念部分)
1.目录略览 线程的基本概念:介绍线程的优点,代价,并发编程的模型.如何创建运行java 线程. 线程间通讯的机制:竞态条件与临界区,线程安全和共享资源与不可变性.java内存模型 ...
- Java 并发性和多线程
一.介绍 在过去单 CPU 时代,单任务在一个时间点只能执行单一程序.之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程.虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个 ...
- Java 并发和多线程(一) Java并发性和多线程介绍[转]
作者:Jakob Jenkov 译者:Simon-SZ 校对:方腾飞 http://tutorials.jenkov.com/java-concurrency/index.html 在过去单CPU时 ...
- Java核心知识点学习----多线程中的阻塞队列,ArrayBlockingQueue介绍
1.什么是阻塞队列? 所谓队列,遵循的是先进先出原则(FIFO),阻塞队列,即是数据共享时,A在写数据时,B想读同一数据,那么就将发生阻塞了. 看一下线程的四种状态,首先是新创建一个线程,然后,通过s ...
- Java并发性和多线程
Java并发性和多线程介绍 java并发性和多线程介绍: 单个程序内运行多个线程,多任务并发运行 多线程优点: 高效运行,多组件并行.读->操作->写: 程序设计的简单性,遇到多问题, ...
- Java并发性和多线程介绍
java并发性和多线程介绍: 单个程序内运行多个线程,多任务并发运行 多线程优点: 高效运行,多组件并行.读->操作->写: 程序设计的简单性,遇到多问题,多开线程就好: 快速响应,异步式 ...
- 带着新人看java虚拟机04(多线程篇)
我记得最开始接触多进程,多线程这一块的时候我不是怎么理解,为什么要有多线程啊?多线程到底是个什么鬼啊?我一个程序好好的就可以运行为什么要用到多线程啊?反正我是十分费解,即使过了很长时间我还是不是很懂, ...
- 在java中怎样实现多线程?线程的4种状态
一.在java中怎样实现多线程? extends Thread implement Runnable 方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 ...
随机推荐
- Python:Short Circuiting -- “OR”
Short Circuiting Operator Checks if: Evaluates from left to right up to: Example AND All values are ...
- dotnet C# 基础 为什么 GetHashCode 推荐只取只读属性或字段做哈希值
在 C# 里面,所有的对象都继承 Object 类型,此类型有开放 GetHashCode 用于给开发者重写.此 GetHashCode 方法推荐是在重写 Equals 方法时也同时进行重写,要求两个 ...
- kubenetes1.26中安装kubesphere3.4版本
一.安装前环境准备 # kubesphere官网:https://kubesphere.io/zh/docs/v3.4/introduction/what-is-kubesphere/ # 1.kub ...
- 1.13~1.14&&放假寄
1.13 3点就放了,手机在机房就能拿到,我为了给手机充会电又多留了一会(事实证明这挺对的) 因为我们是 化微机的班,老师收手机都放在一个箱子里,要有人负责把剩下的手机搬到教室,我走得晚还被当成免费劳 ...
- maven的环境配置
将maven压缩包解压到一个空文件夹中.比如:D盘中的maven文件夹(D:\maven\apache-maven-3.6.3) 注意:路径中不要包含中文.空格.数字等字符 2.新建变量名: MAVE ...
- LVS负载均衡(4)-- LVS FWM防火墙标记
防火墙标记的作用是:借助于防火墙标记来分类报文,然后基于标记定义集群服务:可将多个不同的应用使用同一个集群服务进行调度. 实现方法: 在Director主机打标记,作用在mangle表的PREROUT ...
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-45-鼠标操作-下篇
1.简介 鼠标为我们使用电脑提供了很多方便,我们看到的东西就可以将鼠标移动过去进行点击就可以打开或者访问内容,当页面内容过长时,我们也可以使用鼠标滚轮来实现对整个页面内容的查看,其实playwrigh ...
- Windows远程连接工具有哪些
Windows远程连接工具,一般称为远程桌面软件,更准确的叫远程访问软件或远程控制软件,可以让你从一台电脑远程控制另一台电脑.远程桌面软件允许您控制连接的计算机,就好像它就在您面前一样. 远程桌面工具 ...
- 4G EPS 中的 Bearer
目录 文章目录 目录 前文列表 承载的内涵 EPS Bearer QoS QoS 的关键参数 APR GBR.MBR AMBR UE 是如何选择 EPS Bearer 的? E-RAB Radio B ...
- HC32L110(六) AS06-VTB07H V5.0测试板AT指令固件
目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...