首页 > 编程语言 >Java Volatile和synchronized的区别,notify()和notifyAll()的区别

Java Volatile和synchronized的区别,notify()和notifyAll()的区别

时间:2023-10-18 15:44:40浏览次数:30  
标签:Java synchronized 区别 notifyAll 线程 notify Volatile volatile

Java Volatile和synchronized的区别,notify()和notifyAll()的区别

1.Volatile和synchronized的区别:    

(1)、volatile只能作用于变量,使用范围较小。synchronized可以用在变量、方法、类、同步代码块等,使用范围比较广。   
(2)、volatile只能保证可见性和有序性,不能保证原子性。而可见性、有序性、原子性synchronized都可以包证。  
(3)、volatile不会造成线程阻塞。synchronized可能会造成线程阻塞。   
(4)、在性能方面synchronized关键字是防止多个线程同时执行一段代码,就会影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized。

  1. notify() 和 notifyAll() 都是 Object 对象用于通知处在等待该对象的线程的方法。

void notify():唤醒一个正在等待该对象的线程。
void notifyAll():唤醒所有正在等待该对象的线程。

标签:Java,synchronized,区别,notifyAll,线程,notify,Volatile,volatile
From: https://www.cnblogs.com/chenshaojun2008/p/17772519.html

相关文章

  • ElasticSearch Java API 基本操作
    前言ElasticSearchJavaAPI是ES官方在8.x版本推出的新javaapi,也可以适用于7.17.x版本的es。本文主要参考了相关博文,自己手动编写了下相关操作代码,包括更新mappings等操作的java代码。代码示例已上传github。版本elasticsearch版本:7.17.9,修改/elasticsearch-7.17.9/config/......
  • 节点安装Java 1.8
    下载jdk-8u361-linux-x64.tar.gzhttps://www.oracle.com/java/technologies/downloads上传jdk-8u361-linux-x64.tar.gz到node1以下命令都是在node1上执行解压tar-zxvfjdk-8u361-linux-x64.tar.gz-C/export/server/配置软连接(快捷方式)ln-s/export/server/jdk1.8......
  • JsonPath使用(Java)
    JsonPath使用(Java)Java有一些类似于jq的语法库和工具。其中一个叫做JsonPath,它允许使用类似于jq的语法来查询和操作JSON数据。可以使用JsonPath来提取特定的JSON字段、过滤数据、执行计算等操作。另外,还有一些其他的Java库和框架也提供了类似的功能,比如FastJson,Gson和Jackson。这......
  • Java拾贝第五天——抽象和接口
    Java拾贝不建议作为0基础学习,都是本人想到什么写什么如果父类的方法本身不需要实现,仅仅是为了定义方法。目的是让子类去重写它,那么,可以把父类的方法声明为抽象(abstract)方法classCandy{publicabstractvoidsell();}//无法通过编译若某类中拥有一个或若干个抽象方......
  • java在ubuntu上部署生产环境(适合小项目)
    一、概述需求:将SpringBoot项目打包成jar包,快速部署到云服务器的生产环境。(小型项目)二、部署步骤1.配置好项目运行所需的环境2.将jar包上传到服务器的指定目录(可以自定义)。如:/usr/local/或/tony/jar/(这是个自定义目录)3.创建一个服务文件并将其放入:/etc/system......
  • java
    "循环加载"(circulardependency)指的是,a脚本的执行依赖b脚本,而b脚本的执行又依赖a脚本。 css复制代码//a.jsvarb=require('b');//b.jsvara=require('a');通常,"循环加载"表示存在强耦合,如果处理不好,还可能导致递归加载,使得程序无法执行,因此应该避免出现......
  • 【有趣的小细节】在Java中native方法hashcode()默认是如何生成哈希码的?
    之前看其他文章说,hashcode是根据对象的内存地址生成的。但为了满足自己的好奇心,同时验证这个结论是否是真实的,我半个月前深究了一下。今天突然想起来这回事了,把结论记录一下。结论目前hashcode的方式有以下六种算法:HashCodeMode==0:由操作系统生成的一个随机数。HashCodeMode==1:基......
  • Java(Spring) 通过反射classforName获取对象实例导致@Autowired注入失效
    使用策略模式多态获取具体的策略问题描述:classforName在代码中使用反射获取对象实例后,对象实例中通过@Autowrite注解注入的属性值为null(注入失败),导致带反射获取的对象实例调用方法时出现空指针等情况。问题原因:通过反射获取对象实例相当于“new”了一个对象,所以这个对象并没有被......
  • NTP网络时间服务器是什么?和NTP网络授时有什么区别?
    NTP网络时间服务器是什么?和NTP网络授时有什么区别?NTP网络时间服务器是什么?和NTP网络授时有什么区别?京准电子科技官微——ahjzsz摘要:5G网络部署和垂直行业应用对于时间同步提出了新的需求。为了更满足高精度的同步需求,需要采用高精度同步源技术、高精度同步传送技术、同步监测技......
  • Nacos与Eureka区别与共同点
    Eureka使用指南:https://www.cnblogs.com/gfl-1112/p/17771474.htmlNacos使用指南:https://www.cnblogs.com/gfl-1112/p/17771589.html Nacos与eureka的共同点都支持服务注册和服务拉取都支持服务提供者心跳方式做健康检测Nacos与Eureka的区别Nacos支持服务端主......