`

jvm解析多线程

阅读更多
先看jvm对多线程关于对象锁的介绍

     java虚拟机调用同步方法或者从同步方法中返回没有使用特别的操作码,当虚拟机解析对方法的符号引用时,他判断这个方法是否是同步的。如果是同步的,虚拟机在调用方法之前要获得这个锁。对于实例方法来说。
    虚拟机在方法将要被调用的时候获取对象相关联的锁。对于类方法来说,他获取的是所属类的锁。其实是对Class对象上锁。当同步方法执行完毕的时候,不管正常结束还是抛出异常,虚拟机会释放锁!!

先看两个特别简单的方法 都是同步的

public void walk()
{
synchronized(this)
{

}
}
public synchronized void  walk2(){}
}

你应该采用哪个方法呢

首先有两个理由
1  同步方法产生的字节码少
看两个方法产生的字节码
public void walk()
    {
    //    0    0:aload_0         
    //    1    1:dup             
    //    2    2:astore_1        
    //    3    3:monitorenter    
    // try 4 6 handler(s) 9
    //    4    4:aload_1         
    //    5    5:monitorexit     
    //    6    6:goto            14
    // finally    // try 9 12 handler(s) 9
    //    7    9:astore_2        
    //    8   10:aload_1         
    //    9   11:monitorexit     
    //   10   12:aload_2         
    //   11   13:athrow          
    //   12   14:return          
    }

    public synchronized void walk2()
    {
    //    0    0:return          
    }





2
同步块的方法创建了异常表,finanal 是指如果发生异常,对象最后都要释放锁!!
同步方法就不一样,他持有的类对象的锁,他执行完方法一定要释放锁!!

下面看关于对线程方法的约束

分享到:
评论

相关推荐

    java面试-JVM+多线程三个版本面试题,全集.zip

    Java虚拟机(JVM)和多线程是Java开发者必须掌握的重要概念,它们在面试中经常被问到,尤其对于高级职位来说更是如此。这份"java面试-JVM+多线程三个版本面试题,全集.zip"包含了针对这两个主题的全面问题集,旨在...

    JVM_多线程高并发_集合框架_数据库 BAT面试金典常见80问.pdf

    《JVM_多线程高并发_集合框架_数据库 BAT面试金典常见80问.pdf》这份资料聚焦于Java开发人员在面试中可能遇到的重要问题,涵盖了JVM、多线程高并发、集合框架和数据库等多个核心领域。以下是对这些知识点的详细说明...

    jvm解析编译过的class文件

    总的来说,JVM解析编译过的class文件是一个复杂的过程,涉及众多细节。开发者不仅要理解编译过程,还需要熟悉JVM的内部机制,才能更好地驾驭这个强大的平台。通过阅读相关博文,如给定的链接,可以进一步深入了解...

    JVM面试题、多线程面试题

    标题和描述中提到的是与"JVM面试题、多线程面试题"相关的内容,而标签和压缩包内的文件名却提及"python编程"。为保持一致性并提供准确的信息,我将专注于JVM和多线程相关的面试知识点。 **JVM(Java虚拟机)面试...

    解析JVM内存结构和6大区域

    由于 Java 多线程是通过交替线程轮流切换并分配处理器时间的方式来实现的,在任何一个确定的时间里,在处理器的一个内核只会执行一条线程中的指令。因此为了线程等待结束需要恢复到正确的位置执行,每条线程都会有一...

    JVM监控实例数 windows监控 线程测试 单例模式下测试JVM实例是否一个

    在Java开发中,JVM(Java Virtual Machine)是运行所有Java程序的核心,它负责解析字节码并执行。为了确保应用程序高效稳定地运行,开发者需要对JVM进行监控,了解其内部状态,如内存使用、线程活动等。本文将探讨...

    多线程、JVM复习及面试100题

    在Java编程领域,多线程和Java虚拟机(JVM)是两个至关重要的主题,尤其在面试中常常被考察。本文将围绕这两个核心概念展开,深入解析相关知识点,并结合常见的面试问题进行阐述。 首先,我们来看看多线程。在单核...

    jdk,jvm源码

    6. 多线程:JVM支持多线程并发执行,每个线程都有自己的程序计数器和虚拟机栈。 7. 安全管理:JVM执行严格的类型检查和权限控制,确保代码的安全性。 8. 调优工具:如JVisualVM、JConsole等,帮助开发者监控和调整...

    多线程实战应用

    本文将深入探讨“多线程实战应用”这一主题,结合提供的标签“源码”和“工具”,我们将从理论基础到实践案例,全面解析多线程的核心概念及其在实际开发中的应用。 首先,我们需要理解什么是线程。线程是操作系统...

    JVM 完整深入解析.pdf

    由于Java是多线程并发执行的,每个线程都需要有一个独立的程序计数器,以便记录线程切换后继续执行的位置。 #### 虚拟机栈 虚拟机栈是Java方法执行的内存模型。每当一个方法被执行时,Java虚拟机会同步创建一个栈帧...

    java多线程解析

    【Java多线程解析】 Java中的多线程技术是编程中的一个重要领域,它允许程序同时执行多个任务,从而更高效地利用CPU资源。在Java中,多线程主要用于模拟现实世界中的并发行为,例如"生产者-消费者"模型。本文将深入...

    JVM中编译Class、内存回收、多线程原理和使用

    JVM的设计和实现涉及到多个关键概念,包括类加载、字节码执行、内存管理和多线程支持。 1. 类加载(Class Loading): 类加载是JVM将Java源代码编译成的`.class`文件加载到内存中的过程。这个过程通常由类加载器...

    01大数据面试复习----Java基础---集合类、多线程、JVM.zip

    在准备大数据面试的过程中,Java基础是必不可少的一部分,尤其聚焦于集合类、多线程和JVM这三大核心领域。下面将分别对这三个方面进行深入探讨。 **一、Java集合类** Java集合框架是处理对象组的重要工具,它包括...

    java 核心知识 包含 JVM 线程 集合 数据库 算法 负载等一系列

    Java支持多线程编程,这使得程序能够同时处理多个任务。线程同步和通信是Java并发编程的关键,包括锁(synchronized关键字)、死锁、活锁、阻塞队列等概念。掌握这些,可以编写出高效、稳定的并发程序。 Java集合...

    JVM入门解析.pptx

    Java虚拟机(JVM)是Java程序运行的核心组件...总的来说,JVM的内存模型设计是为了高效地执行多线程Java程序,并通过垃圾回收机制管理内存,防止内存泄露。理解JVM的工作原理对于优化Java程序性能、排查问题至关重要。

    JavaJVM线程调优.pdf

    对于长时间持有锁或者多线程并行度高的应用,禁用偏向锁(通过`-XX:-UseBiasedLocking`)可能有助于提升性能。默认情况下,JVM开启偏向锁。 3. **自旋锁**: 自旋锁是一种非阻塞同步机制,当线程尝试获取锁但锁被...

    jvm8虚拟机规范

    此外,JVM支持多线程并发执行,通过线程上下文切换和同步机制保证并发安全。 8. 性能监控与调优: JVM提供了一系列工具,如JConsole、VisualVM等,用于监控和分析JVM的运行状态,帮助开发者进行性能调优。 通过...

    编写简单的HTTP 1.0客户端/服务器程序:.编写多线程Web服务器:编写简单的RMI程序

    在高并发场景下,多线程技术使得服务器能同时处理多个请求,提高服务效率。在Java中,可以使用Thread类或Runnable接口来创建线程。服务器需要监听特定端口,接收到请求后,创建新的线程来处理,从而避免了单线程模型...

Global site tag (gtag.js) - Google Analytics