Java多线程编程递增_java多线程编程之简介

编写正确的程序很难,编写正确的多线程程序更难。如果对多线程理解的不够深入,编写出来的程序往往跟自己的预期不一样,甚至不知道问题出现在哪里。因此,如果想成为一个好的程序员,掌握多线程是必修的一门功课。

多线程带来的好处:

1、发挥处理器的强大处理能力

随着科技的进步,现在的CPU已经由单核变为双核,甚至多核。而多线程能够很好的利用CPU多核的处理能力来高效并发的执行程序。

2、建模的简单性

一个很复杂的任务可以分解为很多子任务在不同的子线程中去执行,经过这样的分解使得程序更加简洁,错误更少,也更容易测试和定位问题。

3、异步处理

单线程的致命缺点就是顺序执行,只有上一个步骤执行完才能开始下一个步骤,如果上一个步骤很耗时的话,则必须等待,显然这种体验是很不好的。最典型的例子就是GUI程序,比如按下一个按钮,如果执行的是一个比较耗时的操作,这个时候就必须使用线程,否则整个界面就会被冻结。

java多线程是一把双刃剑,用的好可以提升程序的执行效率,用的不好会带来各种莫名其妙的问题,所以在使用的时候我们必须对这些问题有一个清晰的了解。

多线程带来的风险:

1、安全性

我们知道多线程执行的顺序是不确定的,如果它们共享了一个可变变量,同时有线程会去修改这个共享变量的值,那么就会出现安全性问题。看下面这个计数器程序:

publicclass Counter {

private int value;

publicint getNext(){

returnvalue++;

}

}

本来这个程序设计的目的是:每次计算器都递增,不允许出现相同的值。但是如果有多个线程同时执行的话,这个就不确定了。假设当前value的值为10,有两个线程同时获取到这个值,然后各自递增一次,但是最后的结果却是11。这个就是典型的安全性问题,解决这个问题的办法就是使用同步,这个后面会介绍。

2、死锁

当在多线程中使用锁时,要特别注意死锁问题,因为一旦发生死锁,程序将运行不下去了。

3、性能

设计良好的并发程序能够提升性能,如果设计的不合理,滥用线程的话,性能不仅不能提升,反而会下降,这个也是必须要注意的。

现在java多线程已经无处不在了,如 java api 本身,各种框架,可以毫不夸张的说,几乎每个软件都会用到多线程,可见多线程是多么的重要啊。

后面的章节将会逐一的介绍java中多线程的相关知识,大家尽请期待!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中的内置对象-8--4.date对象中-获取,设置日期时间的方法; 获取,设置年月日时分秒及星期的方法;...

学习目标 1.掌握创建日期对象的方法 2.掌握date对象中获取日期时间的方法 3.掌握date对象中设置日期时间的方法 如何创建一个日期对象 语法:new Date(); 功能:创建一个日期时间对象 返回值:比传参的情况下,返回当前的日期时间对象…

秦川团队《科学》刊发研究:新冠感染恒河猴康复后不会再感染

来源:澎湃新闻新冠病毒(SARS-CoV-2)肺炎疫情全球大流行的背景下,恢复期患者是否有再次感染的风险目前尚不清楚。来自中国的最新科研成果表明,原发性新冠病毒感染可防止随后再感染,这对新冠患者的预后和下一…

java禁止修改map_Java中实现不可变Map

有时最好不允许修改 java.util.Map, 例如跨线程共享只读数据。为此,我们可以使用Unmodifiable Map或Immutable Map。在这个快速教程中,我们将看到它们之间的区别。然后,我们将介绍可以创建不可变Map的各种方法。不可修改与不可变…

昨夜,5G R16标准正式冻结!5G物联网扬帆起航

作者:赵小飞物联网智库 整理发布转载请注明来源和出处导 读昨天夜里,负责5G标准的国际组织3GPP TSG#88全体会议宣布5G R16标准冻结。在新冠疫情全球肆虐的背景下,标准化推进工作遇到非常大的挑战,而3GPP的专家们依然能…

Linux下grub.cnf详解

grub.conf跟系统启动项有关,对于重置密码。来说小case。。。 1、介绍 在Red Hat Linux7.2之后,默认的引导加载程序从LTLO变为GRUB.这个引导加载程序使用户能够选择何时以及如何引导安装在计算机硬盘上的可引导的操作系统。 2、说明 变量 说…

(二)用户相关操作

一、导入jar包 见 http://pan.baidu.com/s/1dE9kMJZ 二、导入c3p0并修改值 c3p0.driverClasscom.mysql.jdbc.Driver c3p0.jdbcUrljdbc:mysql://localhost:3306/store c3p0.userroot c3p0.password123456 三、导入工具类 见 http://pan.baidu.com/s/1miutJXe 有关这些工具类的分…

java配合ajax加快发展_配合JAVA的AJAX使用

概要Ajax是“Asynchronous JavaScript and XML”的简称,即异步的JavaScript和XML。readyState属性用来返回当前的请求状态,有五个可选值。分别是0到4,每个值的含义如下描述。 0:“未初始化”状态, 表示已经创建一个XML…

你以为美国商业航天那么牛只是因为马斯克?更多原因在这里!

来源:银河航天漫游指南2020年5月31日,SpaceX的载人龙飞船成功将两位宇航员成功送往国际空间站,成为有史以来第一家将人类送入太空轨道的私营企业。美国商业航天领域的进展有目共睹。载人龙飞船起飞瞬间这次成功发射打破了传统航天领域以国家力…

APP开发流程

https://wenku.baidu.com/view/04a51445c77da26924c5b058.html?fromsearch转载于:https://www.cnblogs.com/ada-openmind/p/7634453.html

java游戏应龙女魃转世_应龙和女魃的凄美爱情,究竟是爱情,还是阴谋?

人世间最痛苦的事情是什么?有人说是生老病死,也有人说是爱憎别离。对于她来说,或许最痛苦的是他的欺骗与背叛……女魃一、初见北荒往东二百里,有一座山,名唤玲珑山。山中住着一名神女,名为女魃。相传&#…

热点|因为AI不是人,美国专利局拒绝认定TA的所有发明权

来源:量子位「你不是人!」——美国专利局(USPTO)。这句话是美国专利局,对所有人工智能说的。4月27日,美国专利局出台一项规定:对于任何由人工智能独立设计发明的产品,因为AI不是自然…

登陆界面代码

1、设计思想 添加窗口界面,想i面添加一系列组件。 输入账号密码和验证码后,如果验证码正确,进行注册,否则注册失败。注册成功后,验证码自动刷新,并将注册的帐号和密码保存。注册失败后,验证码刷…

java中如何调出字体对话框_java 字体对话框

本人不才!花了很长时间写了这个代码。不是很好,比起Windows自带的字体对话框差一点。不过已经够用了。等将来有时间了,在进行完善。如果有什么好的建议,可以提。本人再补。预览效果如下图:package styleDispose;import…

为何苹果为何苹果甘愿冒险自主研发芯片?

来源:内容来自「腾讯科技」7月4日,据外媒报道,苹果不久前宣布将把Mac上使用的处理器从英特尔芯片迁移到自己的Apple Silicon上,尽管这是意料之中的事,但苹果为何甘愿冒险甚至似乎相当渴望进行这种转型的,仍…

用MXNet实现mnist的生成对抗网络(GAN)

用MXNet实现mnist的生成对抗网络(GAN) 生成式对抗网络(Generative Adversarial Network,简称GAN)由一个生成网络与一个判别网络组成。生成网络从潜在空间(latent space)中随机采样作为输入,其输出结果需要尽…

java单元格合并多列_ElementUI表格列相同值自动合并单元格( 多列 )

上篇文章写了如何在处理单列相同数据时让相同的项进行自动合并, 如果有多列合并的需求我们也应该可以从容应对...(产品: 你们看我干嘛?)废话不多说 上代码HTMLJSvar Main {data() {return {tableData6: [{name: 部门1,type: 0,amount1: 跟单员1,amount2: 成衣工厂1,amount3: …

【MIT港科大】最新《贝叶斯深度学习》2020综述论文,35页pdf全面阐述最新进展...

来源:专知来自MIT和香港科技大学的学者最新《贝叶斯深度学习》综述论文,值得关注!地址:https://www.zhuanzhi.ai/paper/9b781282204cb581a31aa0e8b570dd95摘要一个综合的人工智能系统不仅需要用不同的感官(如视觉和听觉)感知环境&…

VisualVM远程监控Java

1、服务器启动jstatd服务设置: jstatd将使用RMISecurityPolicy,并且需要指定安全策略文件. 安全策略文件必须符合安全策略语法,通过命令 jstatd -J-Djava.security.policyfile指定策略文件。以下的安全策略配制是可以访问所有代码库. grant c…

java枚举怎么编译不行的_java – 打开枚举时Maven编译失败

我是一个mavenifying(是一个单词?)一个项目,其构建过程到目前为止完全基于ant /shell脚本.请考虑以下枚举public enum ResourceType {A, B;}以下bean:public ResourceTypeOwner {//set get resourceType property}以下代码片段:void foo(Reso…

​ 长达35页!美国公布未来新兴科技趋势报告

本文来源:笔记侠未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图…