当前位置: 首页 > 面试题库 >

'synchronized' 是什么意思

羊柏
2023-03-14
问题内容

我对synchronized关键字的用法和重要性有一些疑问。

  • synchronized关键字的意义是什么?
  • 方法synchronized什么时候应该?
  • 从程序上和逻辑上是什么意思?

问题答案:

synchronized关键字是所有不同的线程读取和写入相同的变量,对象和资源。这不是Java中的琐碎话题,但以下是Sun的引文:

synchronized 方法提供了一种防止线程干扰和内存一致性错误的简单策略:如果一个对象对一个以上线程可见,则对该对象变量的所有读取或写入均通过同步方法完成。

简而言之:当你有两个线程正在读取和写入同一个“资源”时,说一个名为的变量foo,你需要确保这些线程以原子方式访问该变量。如果没有synchronized关键字,线程1可能看不到线程2对所做的更改foo,或者更糟的是,它可能只更改了一半。这在逻辑上不会是你所期望的。

同样,这是Java中不平凡的主题。要了解更多信息,请在SO和Interwebs上探索有关以下主题:

  • 并发
  • Java内存模型

继续探索这些主题,直到名称“ Brian Goetz”与大脑中的“并发”一词永久关联。



 类似资料:
  • 主要内容:一、synchronized的使用方式,二、synchronized锁的原理,三、synchronized锁的优化,四、Lock锁与synchronized一、synchronized的使用方式 在语法上,要使用synchronized关键字,需要把任意一个非null对象作为"锁"对象,也就是需要一个对象监视器(Object Monitor)。总的来说有三种用法: 1.1 作用在实例方法 修饰实例方法,相当于对当前实例对象this加锁,this作为对象监视器。 1.2 作用在静态方法

  • 主要内容:一、synchronized的使用方式,二、synchronized锁的原理,三、synchronized锁的优化,四、Lock锁与synchronized一、synchronized的使用方式 在语法上,要使用synchronized关键字,需要把任意一个非null对象作为"锁"对象,也就是需要一个对象监视器(Object Monitor)。总的来说有三种用法: 1.1 作用在实例方法 修饰实例方法,相当于对当前实例对象this加锁,this作为对象监视器。 1.2 作用在静态方法

  • 问题内容: 在java int,float等中,是原始类型。如果我们需要将其与泛型一起使用,则使用包装器类。但是,以下声明在Java中仍然有效, 即使它是原始类型,如何调用? 问题答案: 原始对象成为对象 对于基元,在相应的包装器类中有一些名为TYPE的常量的Class对象可用-即,int.class更改为java.lang.Integer.TYPE。对于其他类型,编译器在正在编译的类中创建一个私

  • 问题内容: 我目前正在(恢复)使用EJB的速度,而当我离开时,它发生了巨大的变化(到目前为止更好)。但是,我遇到了一个我正在苦苦挣扎的概念,并且想更好地理解它,因为它似乎在我们的代码中使用了(我工作的地方,而不是我和我所有的声音)。 这是我在一本书中找到的示例。这是显示如何使用注释的示例的一部分: 的类是一个相当简单的类来定义对:和。 哦,我从Rubinger&Burke的O’Reilly的Ent

  • 问题内容: 什么是POSIX?我已阅读Wikipedia文章,并且每次遇到该术语时都会阅读。事实是我从来没有真正了解过它是什么。 有人可以通过解释“ POSIX的需求”来向我解释吗? 问题答案: POSIX是IEEE指定的一系列标准,用于阐明和统一Unix- y操作系统提供的应用程序编程接口(以及附属问题,例如命令行外壳实用程序)。当您编写依赖于POSIX标准的程序时,可以肯定地将它们轻松移植到大

  • 本文向大家介绍NULL是什么意思?相关面试题,主要包含被问及NULL是什么意思?时的应答技巧和注意事项,需要的朋友参考一下 NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。 对NULL这个值的任何比较都会生产一个NULL值。 您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。 使用IS NULL来进行NULL判断