Java并发编程相关概念及注意事项是什么

技术Java并发编程相关概念及注意事项是什么Java并发编程相关概念及注意事项是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。相应的概念

与Java并发编程相关的概念和注意事项有哪些?很多新手对此不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。有这种需求的人可以学习,希望你能有所收获。

相应的概念在Java中的具体表现形式,及使用中应注意的几个问题?

在Java并发编程中,synchronized这个词在早期会被广泛使用,除非开发人员熟悉J.U.C包中的相关工具类来替代它们。

这里的Synchronized也叫隐式锁、内置锁或托管锁,它们都指的是同一个锁,所以当你看到一个新概念时,你不应该感到惊讶。这里的锁似乎是看不见的。我们开发者只是通过关键词来使用,并不关心锁的获取和释放等细节。

本质上,隐式锁定是通过在JVM的指令层添加与监控进入和退出相关的指令来实现的。

例如,下面几行代码:

对象o=新对象();

public void test(){ 0

synchronized(o)

system . out . println(o);

}

}

转换后的jvm指令如下,注意监视器指令。

与同步锁相比,J.U.C中的再入锁和读写锁需要开发人员获取和释放显式锁,其实现形式各不相同。根据使用场景,如果需要更细粒度的控制锁,可以使用J.U.C的实现。

在Java并发编程中,另一个经常使用且容易被误用的是volatile。

一般我们用volatile来设置和判断一些重要的标记,比如这个。

publicationstativatileboondoff=false;在这种情况下,当其他线程修改标识符时,可以保证稍后执行的线程的可见性。

对于这种类型的声明,只有volatile是不够的:

publicationstativatileintcount=0;如果在这里,我们使用count作为计数器,并对每个线程的请求进行计数。在这种情况下,除非我们显式添加锁,否则结果不会达到预期。

这是因为整个计数不是一个整体,尽管它在形式上似乎是不可分割的。但它实际上是由取值、加1和赋值的步骤组成的。多线程执行时,容易造成混乱,最终结果不符合预期。

使用volatile无法实现安全计数。毕竟是抑制CPU进行指令重排序,可以实时获取最新成果进行写作和阅读,不受JMM影响。为了实现安全的计数或递增,需要锁干预,以保证整个计数操作互斥。在整个关键区域,一个线程的计数操作不受其他线程的影响。

另外,在Java并发编程中,用synchronized锁定时,需要注意的一个问题是:

你只能在拥有锁后等待并通知它。

否则,您将会遇到此异常:

线程“main”中出现异常。IllegalMonitorStateException

这就像一个人喊着要把他的面包给你,但他只有空气…你往他脸上吐口水,:).

阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/44632.html

(0)

相关推荐

  • 如何复制加密的sd卡(手机克隆sd卡数据到新手机)

    技术如何克隆SD卡的内容这篇文章将为大家详细讲解有关如何克隆SD卡的内容,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。如何克隆SD卡的内容树莓派安装好了软件,其它的需要重

    攻略 2021年12月22日
  • 描写梨花的优美古诗,几句赞美梨花的优美语句

    技术描写梨花的优美古诗,几句赞美梨花的优美语句1、清晨,白璧无瑕,大地从沉睡中清醒,梨花也充满着蓬勃的朝气描写梨花的优美古诗。梨花没有玫瑰的妖娆美丽,没有菊花的傲然脱俗,然而它却是我最喜爱的花,雪白的花瓣在露珠的清洗下变

    生活 2021年10月29日
  • css3动画图片旋转效果(css3动画的初始旋转角度)

    技术css3如何实现一个旋转的动画本篇内容介绍了“css3如何实现一个旋转的动画”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

    攻略 2021年12月16日
  • Sql Server中存储过程中输入和输出参数是什么

    技术Sql Server中存储过程中输入和输出参数是什么本篇文章为大家展示了Sql Server中存储过程中输入和输出参数是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。[s

    攻略 2021年12月1日
  • 怎么解决oracle中由于gipc导致某节点crs无法启动问题

    技术怎么解决oracle中由于gipc导致某节点crs无法启动问题这篇文章主要讲解了“怎么解决oracle中由于gipc导致某节点crs无法启动问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢

    攻略 2021年11月10日
  • Maven编译打包时如何忽略测试用例

    技术Maven编译打包时如何忽略测试用例本篇文章给大家分享的是有关Maven编译打包时如何忽略测试用例,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。跳过测试

    攻略 2021年10月29日