`
lvmlvy
  • 浏览: 42583 次
社区版块
存档分类
最新评论

单例对象公有方法的并发调用

    博客分类:
  • java
阅读更多

首先,我们要清楚java中的内存情况,大略如下,这个大家一般都知道:

1:heap,堆内存,用来存放新创建的类对象,其实就是存储对象的成员变量值、变量类型、对象类型标记;

2:stack,栈内存,用来存储局部变量、对对象的引用等;

3:data segment,数据区,在这个区主要存放的是静态常量,和字符串常量。在类一开始被加载的时候此常量就被初始化放在这个区内,而且被全局所共享,所有的访问直接指向他即可。

4:code segment,代码区,它是存放代码的区,所有的执行代码(其实就是函数)都放在此区内。通过对象的调用指向此区。

 

现假设两个线程正企图同时访问一个单例对象的方法,如

int method1(int i) {    
    int j = 3;     
    return i+j;    
} 

 一个规范的虚拟机线程在调用method1()的时候是这样做的: 

    1) 把method1()的局部变量,包括参数,压入当前线程的栈; 
    2) 从当前线程栈弹出变量j,并赋予数值3; 
    3) 从当前线程栈弹出参数i,与j执行加法运算; 
    4) 从当前线程栈中释放当前方法占用的栈帧,并把method1()的结果压入当前线程栈。 
需要说明的是,当前线程栈是当前线程独有的,绝对不会被其它线程访问到。

分享到:
评论

相关推荐

    Python调用公有云api操作手册.docx

    Python调用公有云api操作手册.docx

    java类和对象通过调用对象的方法来进行存款、取款和获取账户余额等操作.txt

    在Main类中,我们创建了一个BankAccount对象,并通过调用对象的方法来进行存款、取款和获取账户余额等操作。这个示例展示了类和对象的概念在实际应用中的运用,模拟了一个银行账户的基本操作,包括存款、取款和打印...

    单例模式PHP实现代码类.zip

    介绍一个单例模式PHP实现代码类,getInstance()方法必须设置为公有的,必须调用此方法,对象方法不能访问普通的对象属性,所以$_instance需要设为静态的

    java面向对象编程(OOP)中类的定义示例代码、对象的创建和方法的调用等基本概念.txt

    代码中,我们定义了一个名为Student的类,该类具有私有的name和age属性,以及公有的构造方法和一些操作属性的方法。在Main类中,我们创建了一个Student对象,并通过调用对象的方法来设置和获取学生的姓名和年龄,并...

    JAVA多线程并发下的单例模式应用

    3.公有的、静态的、访问该实例对象的方法 单例模式分为懒汉形和饿汉式 懒汉式: 应用刚启动的时候,并不创建实例,当外部调用该类的实例或者该类实例方法的时候,才创建该类的实例。(时间换空间) 优点:实例在被...

    php基于单例模式封装mysql类

    介绍了php基于单例模式封装mysql类,结合完整实例形式分析了php使用单例模式封装的mysql类定义与使用方法 掌握满足单例模式的必要条件 (1)私有的构造方法-为了...(4)公有的静态方法-为了让用户进行实例化对象的操作

    java设计模式–单例模式推理过程

    java 设计模式–单例模式推理过程 ...* 共有的话别人一调用就会有新的单例对象,没法保证单一的实例 * 2. 公有静态的方法 ---- 用来调用私有的构造方法 * 由于构造方法是私有的,我们要想调用的话,

    php基于单例模式封装mysql类.zip

    介绍了php基于单例模式封装mysql类,结合完整实例形式分析了php使用单例模式封装的mysql类定义与使用方法 掌握满足单例模式的必要条件 ... (4)公有的静态方法-为了让用户进行实例化对象的操作

    单例模式Singleton(java源码)

    单例类必须给所有其他对象提供这一实例。 Singleton模式包含的角色只有一个,就是Singleton。Singleton拥有一个私有构造函数,确保用户无法通过new直接实例化它。除此之外,该模式中包含一个静态私有成员变量...

    15丨软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?.pdf

    15丨软件设计的接口隔离原则:如何对类的调用者隐藏类的公有方法?.pdf

    php单例模式的简单实现方法

    * getInstance()方法必须设置为公有的,必须调用此方法 * 以返回实例的一个引用 * ::操作符只能访问静态变量和静态函数 * new对象都会消耗内存 * 使用场景:最常用的地方是数据库连接。 * 使用单例模式生成一个对象后...

    Java并发编程(学习笔记).xmind

    远程方法调用(RMI) 正确协同多个对象中的共享状态 正确协同远程对象本身状态的访问 Swing和AWT 事件处理器与访问共享状态的其他代码都要采取线程安全的方式实现 框架通过在框架线程中调用...

    通过表单提交实现调用不同的action方法

    可以在具体的Action实现类里增加新的方法(这些方法都是无参和公有的,都有一个String的返回类型),然后在url上指定这次请求调用哪个方法 有源代码,有注释,配置文档也配置好了

    用面向对象设计的方法,设计一个圆的类

    用面向对象设计的方法,设计一个圆的类,包括计算圆的直径、圆的周长和圆的面积的方法。 【问题描述】 用面向对象设计的方法,设计一个圆的类,包括计算圆的直径、圆的周长和圆的面积的方法。 【基本要求】 采用...

    C# 公有变量 私有变量 静态变量

    C# 的几种方法定义示例,公有方法、私有方法、静态方法,20171028

    Java《面向对象程序设计》实验报告六

    有两个公有方法void getAge()和setAge(int age),其中setAge(int age)的功能是把参数age的值加到类中的变量age中(但要求age>0,否则抛出自定义异常MyException类的对象),getAge()方法返回age的值。编写应用程序。

    javascript面象对象编程

    函数声明后加括号 – 创建完成后立即调用执行 函数对象和其它内部对象的关系 – 对于Function, Object, Array, Date, RegExp, Math, Error等内部对象 可使用new操作来返回一个对象实例 三、类 1. 实现 2. 公有成员,...

    C++实验三.docx

    1 、定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完成时间的设定、改变、获取...

    阿里公有云、专有云ASAPI网关方式通用调用java示例

    阿里公有云、专有云ASAPI网关方式通用调用java示例

    公有云实施管理规范.pdf

    公有云实施管理规范.pdf公有云实施管理规范.pdf公有云实施管理规范.pdf公有云实施管理规范.pdf公有云实施管理规范.pdf公有云实施管理规范.pdf公有云实施管理规范.pdf公有云实施管理规范.pdf

Global site tag (gtag.js) - Google Analytics