`
jokermanager
  • 浏览: 143785 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Synchronize与JAVA内存模型

阅读更多

  每个JAVA对象都有一把所,当有多个线程同时访问共享资源 的时候,需要Synchronize 来控制安全 性,synchronize分synchronize 方法和synchronize块,使用synchronize块时, 一定要显示的获得该对象的锁(如synchronize(object))而方法则不需要。

  JAVA 的内存模型是对每一个进程有一个主内存,每个线程有自己的内存,他们从主内存中取数据,然后计算,再存入主内存中。

 并发问题如下:如果多个线程同事操作同一数据,A线程从主内存中取的I的值为1,然后进行加1操作,这时B线程也取I的值,行加2操作。然后A存入2到主内存中,B也存入,这样就覆盖了A的值(同数据库中的并发问题一样)。

 解决办法是用synchronize,如用synchronized(I)。被synchronize 修饰的方法(块)把以下三步操作当成一个原子操作:取数据,操作数据,存数据。我们知道原子操作是不可以被打断的,所以其保证了数据一致性,这样同一时间只有一个线程再执行,对性能有一定的影响。这也是synchronize的第二个作用:保证统一时间只有一个线程再运行。当实现SOCKET连接的时候经常用到。

  JAVA中规定对非FLOAT, LONG的原始类型的取和存操作为原子操作。其实就是对一个字(32位)的取,存位原始操作,因为FLOAT, LONG为两个字节的长度,所以其取,存为非原子操作。如果想把他们也变为原子操作,可以用VOLATILE关键字来修饰。

分享到:
评论

相关推荐

    Java线程/内存模型的缺陷和增强

     一、Java内存模型 在了解Java的同步秘密之前,先来看看JMM(JavaMemoryModel)。 Java被设计为跨平台的语言,在内存管理上,显然也要有一个统一的模型。而且Java语言最大的特点就是废除了指针,把

    Java面试思维导图.pdf

    ### Java内存模型(JMM) JMM是Java虚拟机规范的一部分,定义了共享内存系统中多线程读写操作行为的规范。它解决了Java程序在不同硬件和架构平台下数据一致性问题。synchronize和volatile都与JMM紧密相关,能够保证...

    java面试题库(非常全面).

    5. **JVM(Java虚拟机)**:理解JVM的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾回收(GC)及优化策略。 6. **多线程**:线程的创建方式(Thread类和Runnable接口),同步机制(synchronized...

    java技术储备,如何提升自己

    1. Java 虚拟机(JVM):了解 JVM 的内存模型,包括方法区、堆、栈、程序计数器等区域的作用和特点。 2. 内存管理:熟悉 JVM 的垃圾回收机制,包括标记-清除算法、复制算法、标记-整理算法、分代收集算法等。 3. ...

    Java编程中“为了性能”需做的26件事

    7. **理解并利用JVM内存模型**:熟悉堆、栈、方法区的分配,避免内存溢出。 8. **使用局部变量**:尽可能将变量定义为局部变量,减少作用域,提升性能。 9. **减少 synchronize 的使用**:谨慎使用synchronized...

    经典java面试题下载

    8. **内存泄漏**:Java虽然有垃圾回收机制,但不当的引用管理仍可能导致内存泄漏,例如静态集合对对象的持有。 9. **PreparedStatement vs Statement**:PreparedStatement预编译SQL语句,提高执行效率并防止SQL...

    超级有影响力霸气的Java面试题大全文档

    内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的...

    积分管理系统java源码-AndroidKnowledgeSystem:Android知识架构体系

    内存模型 内存回收机制 并发编程 同步机制 violate和synchronize wait和notify 线程池 锁 源码分析concurrent包 ConcurrentHashMap CopyOnWriteArrayList BlockingQeque ThreadLocal 反射 Kotlin Kotlin的优势 协程 ...

    蚂蚁金服(2018)java 面试题(内部资料)

    #### 五、Lock 和 synchronize 实现原理与区别 - **Lock** 接口: - 提供了更灵活的锁管理方式,例如可重入锁、尝试锁等。 - 需要显式地获取和释放锁。 - **Synchronized** 关键字: - 由 JVM 自动管理锁的获取...

    专业程序员技术模板,供大家参考

    2. **JVM知识**:熟悉JVM的工作原理、内存模型、类加载机制和GC算法,能使用相关工具进行问题排查。 3. **开源框架**:精通Spring Boot、Spring、Spring MVC、Mybatis等,理解Spring Boot的自动装配和IoC、AOP特性...

    jmf _api 中文版

    创建处理器时,需要定义一个处理器模型(Processor Model),该模型定义了处理器输入与输出条件。通过`Manager.createRealizedProcessor`方法可以创建一个已经初始化完毕的处理器对象。 #### 三、展示媒体接口组件...

    程序员英语词汇(个人整理版)

    - TCP/IP协议族中的套接字编程模型允许不同计算机上的进程进行通信。 - 在服务器端编程中,通过监听特定端口上的套接字来接收客户端请求。 #### 9. paste (粘贴) - **定义**: 粘贴操作是将剪贴板中的内容插入到...

Global site tag (gtag.js) - Google Analytics