位置: 编程技术 - 正文

【java多线程的优点】(java多线程用法)

编辑:rootadmin

推荐整理分享【java多线程的优点】(java多线程用法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:java多线程有几种实现方法实战,java多线程最佳实践,java多线程总结,java多线程用法,java多线程用法,多线程java多线程,java多线程实现原理,java多线程用法,内容如对您有帮助,希望把文章链接给更多的朋友!

原文: Jenkov 翻译:古圣昌 校对:欧振聪

尽管面临很多挑战,在java学习中多线程有一些优点使得它一直被使用。这些优点是:

资源利用率更好程序设计在某些情况下更简单程序响应更快资源利用率更好

想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景。比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要:

5秒读取文件A2秒处理文件A5秒读取文件B2秒处理文件B---------------------总共需要秒复制代码从磁盘中读取文件的时候,大部分的CPU时间用于等待磁盘去读取数据。在这段时间里,CPU非常的空闲。它可以做一些别的事情。通过改变操作的顺序,就能够更好的使用CPU资源。看下面的顺序:5秒读取文件A5秒读取文件B &#; 2秒处理文件A2秒处理文件B---------------------总共需要秒复制代码

CPU等待第一个文件被读取完。然后开始读取第二个文件。当第二文件在被读取的时候,CPU会去处理第一个文件。记住,在等待磁盘读取文件的时候,CPU大部分时间是空闲的。

【java多线程的优点】(java多线程用法)

总的说来,CPU能够在等待IO的时候做一些其他的事情。这个不一定就是磁盘IO。它也可以是网络的IO,或者用户输入。通常情况下,网络和磁盘的IO比CPU和内存的IO慢的多。

程序设计更简单

在单线程应用程序中,如果你想编写程序手动处理上面所提到的读取和处理的顺序,你必须记录每个文件读取和处理的状态。相反,你可以启动两个线程,每个线程处理一个文件的读取和操作。线程会在等待磁盘读取文件的过程中被阻塞。在等待的时候,其他的线程能够使用CPU去处理已经读取完的文件。其结果就是,磁盘总是在繁忙地读取不同的文件到内存中。这会带来磁盘和CPU利用率的提升。而且每个线程只需要记录一个文件,因此这种方式也很容易编程实现。

程序响应更快将一个单线程应用程序变成多线程应用程序的另一个常见的目的是实现一个响应更快的应用程序。设想一个服务器应用,它在某一个端口监听进来的请求。当一个请求到来时,它去处理这个请求,然后再返回去监听。

服务器的流程如下所述:

while(server is active){ listen for request process request}复制代码如果一个请求需要占用大量的时间来处理,在这段时间内新的客户端就无法发送请求给服务端。只有服务器在监听的时候,请求才能被接收。另一种设计是,监听线程把请求传递给工作者线程(worker thread),然后立刻返回去监听。而工作者线程则能够处理这个请求并发送一个回复给客户端。这种设计如下所述:while(server is active){ listen for request hand request to worker thread}复制代码

这种方式,服务端线程迅速地返回去监听。因此,更多的客户端能够发送请求给服务端。这个服务也变得响应更快。

桌面应用也是同样如此。如果你点击一个按钮开始运行一个耗时的任务,这个线程既要执行任务又要更新窗口和按钮,那么在任务执行的过程中,这个应用程序看起来好像没有反应一样。相反,任务可以传递给工作者线程(word thread)。当工作者线程在繁忙地处理任务的时候,窗口线程可以自由地响应其他用户的请求。当工作者线程完成任务的时候,它发送信号给窗口线程。窗口线程便可以更新应用程序窗口,并显示任务的结果。对用户而言,这种具有工作者线程设计的程序显得响应速度更快。

【如何创建并运行java线程】 原文链接译者:章筱虎校对:方腾飞在java学习中,Java线程类也是一个object类,它的实例都继承自java.lang.Thread或其子类。可以用如下方式用java中创建一个

Android WiFi--系统架构 原文链接请参考:

Android:wpa_supplicant决定选择哪种驱动 1,main函数的入口:external/wpa_supplicant_8/wpa_supplicant/main.c2,init.rc中通过参数指定要加载哪个驱动3,wpa_supplicant中加载驱动的原理main.c:main()--wpa_supplicant.c:wp

标签: java多线程用法

本文链接地址:https://www.jiuchutong.com/biancheng/374549.html 转载请保留说明!

上一篇:Unity3D中 Android插件findviewbyid返回null的解决办法(unity3d插件手机版)

下一篇:【如何创建并运行java线程】(创建步骤)

  • 印花税的实质
  • 已发货没开票分录
  • 网购商品怎么报销
  • 定期定额户个人所得税怎么申报
  • 金融利息是什么意思
  • 劳务公司代发工资合法吗
  • 已入账未抵扣退回发票
  • 企业间借款利息怎么算
  • 餐饮行业享受免增值税政策怎么开发票
  • 小苏打税收分类
  • 如何倒算税前工资的公式
  • 全额计提坏账的款项收回
  • 消耗性生物资产的账务处理
  • 银行账户注销以后预留印鉴
  • 去税局代开开专用发票需要带什么证件?
  • 火狐浏览器下载安装
  • 收到投资款怎么处理帐
  • 收到工会经费怎样做账
  • 小规模纳税人确认收入时要确认税吗
  • 隐藏分区怎么打开
  • win7系统为什么没有虚拟光驱
  • 如何用mac制作ppt
  • 应付股利属于什么科目
  • 向境外支付技术服务费怎里面的增值税怎么入账
  • 资产增加为什么记借方
  • 金融保险业的营业税率为
  • 借出材料表
  • 企业如何申请进出口资质
  • Symfony2创建页面实例详解
  • php自定义函数格式是什么
  • 进口增值税科目
  • 总公司与分公司合作协议范本
  • 以固定资产抵债发生的固定资产
  • 免征的教育费附加怎么做账
  • 劳务费发票是不是专票
  • 预付和挂账怎么做分录
  • 给第三方的销售怎么做
  • 闭包怎么求
  • mysql基本命令大全
  • mongodb 入门
  • 从农业生产者购进农产品
  • 在途物资属于会计科目吗
  • 出口关税的计算公式
  • 如何恢复sql数据库
  • sqlserver 中charindex/patindex/like 的比较
  • mysql的日期时间函数
  • 公司支付宝账户怎么管理
  • 关税完税价格计算增值税
  • 可供出售金融资产公允价值变动
  • 已认证被作废发什么短信
  • 广告发票能抵扣吗
  • 已提过5个月折旧要进行固定资产一次性扣除吗?
  • 确认应付职工薪酬如何计算
  • 工程项目立项前包括哪几个过程
  • 小微企业如何自己开发票
  • 支付投资者投入的款项
  • 车票抵扣税款
  • 年底所得税的会计分录
  • sql server使用sql语句
  • mysql优化表命令
  • mysql5.7.33安装配置教程
  • mac电脑双系统
  • bash.exe
  • xp系统怎么装系统教程
  • w10 2021年更新
  • win8.1应用商店无法打开
  • Win10预览版拆弹
  • win8系统修复在哪里
  • js cocos
  • unity3ds
  • js计算时间差毫秒
  • 网页javascript错误
  • 安卓版影音播放器哪个好用
  • android基础教程
  • shell 计算表达式
  • 字符串拼接join
  • 介绍一个简单的实验
  • dom4j解析xml字符串步骤
  • 航天信息服务费300元
  • 全面推进行政执法公示制度包含的主要内容有
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设