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

在Java中哪些情况需要同步方法访问?

刘曾琪
2023-03-14
问题内容

在什么情况下需要同步对实例成员的访问?我知道对类的静态成员的访问始终需要同步-因为它们在该类的所有对象实例之间共享。

我的问题是,如果不同步实例成员,什么时候会出现错误?

例如,如果我的课程是

public class MyClass {
    private int instanceVar = 0;

    public setInstanceVar()
    {
        instanceVar++;
    }

    public getInstanceVar()
    {
        return instanceVar;
    }
}

在什么情况下(使用该类MyClass),我 需要 使用以下方法: public synchronized setInstanceVar()
public synchronized getInstanceVar()

预先感谢您的回答。


问题答案:

这取决于您是否希望类是线程安全的。大多数类都不是线程安全的(为简单起见),在这种情况下,您不需要同步。如果需要它是线程安全的,则应同步访问
使变量可变。(它避免了其他线程获取“陈旧的”数据。)



 类似资料:
  • 远程类加载是指加载未在执行位置显示的类。 例如,JavaApplet需要将类从服务器加载到本地并在本地执行。 一些包含URLClassLoader的程序需要从网络加载类,并在本地执行。 RMI怎么样?我找到了一个名为RMIClassLoader的类?是远程类加载吗?

  • 本文向大家介绍vue边界情况有哪些?相关面试题,主要包含被问及vue边界情况有哪些?时的应答技巧和注意事项,需要的朋友参考一下 @Yanhua67 https://cn.vuejs.org/v2/guide/components-edge-cases.html

  • 本文向大家介绍栈溢出有哪些情况?相关面试题,主要包含被问及栈溢出有哪些情况?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1)、局部数组过大。当函数内部的数组过大时,有可能导致堆栈溢出。 2)、递归调用层次太多。递归函数在运行时会执行压栈操作,当压栈次数太多时,也会导致堆栈溢出。3)、指针或数组越界。这种情况最常见,例如进行字符串拷贝,或处理用户输入等等。

  • core-site.xml文件通知Hadoop守护进程NameNode在集群中运行的位置。它包含Hadoop核心的配置设置,例如HDFS和MapReduce通用的I/O设置。 hdfs-site.xml文件包含HDFS后台进程的配置设置;NameNode、次级NameNode和DataNodes。在这里,我们可以配置hdfs-site.xml在HDFS上指定默认的块复制和权限检查。还可以在创建文件

  • 本文向大家介绍覆盖在Java中引发异常的方法时,需要遵循哪些规则?,包括了覆盖在Java中引发异常的方法时,需要遵循哪些规则?的使用技巧和注意事项,需要的朋友参考一下  当我们重写抛出Exception的方法时,我们需要遵循一些规则。 当父类方法 未引发任何异常时,子类方法将不会引发任何已检查的异常,但它可能会引发任何未检查的异常。 当 父类方法抛出一个或多个检查异常时,子类方法可以抛出任何未检查

  • 问题内容: 咨询JavaDocs和该方法的源代码后,我发现: 可以看出,在处的本机方法调用在同步块之外。因此,如果不将对方法的调用放入块中,是否安全? 它是线程安全的吗?如果有多个线程尝试同时中断它怎么办?这样,本机方法将如何表现? 问题答案: 我会说是的…这是线程安全的。 原因: 如果应用程序有必要在一个块中调用,那么规范(javadoc)会这样说,并且还说出需要同步到哪个对象以获得线程安全。实