`

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面试题库与答案解析

    包含Java常见面试题,高并发、大数据、源码解读、缓存、Mq、数据库、微服务、设计模式、jvm、多线程等

    JAVA面试通关:100道经典JAVA面试题及答案解析

    本书精选了互联网大厂100道经典的Java面试题目,并为每道题目提供了详细的答案解析,涵盖了Java基础知识、面向对象编程、集合框架、多线程、JVM等方面的知识点。无论您是初学者还是有经验的开发者,都可以从中...

    java数据分析源码-javaModel:java高级基础知识总结,算法,数据结构,多线程,jvm优化,spring源码分析,java新特性等

    一、多线程高并发(concurrent、jvm包) 1.JUC多线程及高并发 1.1 多线程集合 1.2 cas 1.3 锁 1.4 队列 1.5 线程池 2.JVM+GC解析 demo 二、JDK8新特性(lamp包) 1.四大函数式接口 2.方法引用 3.构造器引用 4.数组...

    互联网大厂高频重点面试题1289477175.xmind

    3. JUC多线程及高并发+4. JVM + GC解析+6. NOSQL数据库Redis+相关源代码);我的这个看过尚硅谷面试第二季的估计都应该知道吧(github上的只有3. JUC多线程及高并发+4. JVM + GC解析,并且缺少),希望大家拿到之后,找到一...

    2、导致JVM内存泄露的ThreadLocal详解

    导致JVM内存泄露的ThreadLocal详解 为什么要有ThreadLocal ThreadLocal的使用 实现解析 引发的内存泄漏分析 错误使用ThreadLocal导致 线程不安全分析

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 112 5.2.5 服务器JVM进程崩溃 / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 ...

    Java 并发编程原理与实战视频

    第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 [免费观看] 00:09:13分钟 | 第5节线程的状态以及各状态之间的转换详解...

    Java多线程之volatile关键字及内存屏障实例解析

    volatile是JVM提供的一种最轻量级的同步机制,因为Java内存模型为volatile定义特殊的访问规则,使其可以实现Java内存模型中的两大特性...这篇文章主要介绍了Java多线程之volatile关键字及内存屏障,需要的朋友可以参考下

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【多线程】多线程的实现方式Thread、Runnable、Callable 72 【多线程】实现Runnable接口与继承Thread类比较 73 【多线程】线程状态转换 74 【多线程】线程的调度 75 线程优先级 75 sleep 76 wait 76 yield 77 join ...

    Java最常见200面试题以及解析

    分别是: Java 基础、容器、多线程、反射、对象拷 贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM。...

    threaddump-analyzer:JVM线程转储分析器

    支持解析压缩的线程转储。 如果一个线程持有多个锁,则应在“同步器”部分中针对所有涉及的锁进行记录。 在涉及的锁中添加“ Held with”标头,列出与该锁同时保留的其他锁。 使用prettyClassName()+计数器组成新...

    Java全能学习面试手册——Java面试题库.zip

    08 15道面试常问的Java多线程面试题!.pdf 09 17道消息队列Kafka面试题!.pdf 10 18道非常牛逼的Nginx面试题!.pdf 11 20道顶尖的Spring Boot面试题!.pdf 12 20道面试官常问的JVM面试题!.pdf 13 22道面试常问的...

    Java 最常见 200+ 面试题全解析:面试必备.docx

    分别是: Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM

    Java面试第二季.xmind

    JUC多线程及并发、JVM+GC解析、GitHub骚操作、消息中间件MQ、NOSQL数据库Redis

    Java并发编程原理与实战

    了解多线程所带来的安全风险.mp4 从线程的优先级看饥饿问题.mp4 从Java字节码的角度看线程安全性问题.mp4 synchronized保证线程安全的原理(理论层面).mp4 synchronized保证线程安全的原理(jvm层面).mp4 单例问题...

    Java知识整理互联网大厂面试题解析.zip

    Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客...包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多线程并发、netty、MySQL、MongoDB、Elasticsearch、Redis、HBASE

    509 道 Java 面试题汇总与解析.zip

    Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客...包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多线程并发、netty、MySQL、MongoDB、Elasticsearch、Redis、HBASE

    JVM解毒——类加载子系统

    多线程的情况下,类的加载为什么不会出现重复加载的情况? 什么是双亲委派机制?它有啥优势?可以打破这种机制吗? 类加载子系统 类加载机制概念 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行...

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第一阶段09讲、多线程与JVM内存结构的关系,虚拟机栈实验.mp4 │ 高并发编程第一阶段10讲、Thread构造函数StackSize详细讲解.mp4 │ 高并发编程第一阶段11讲、Thread构造函数StackSize详细讲解-续....

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段09讲、多线程与JVM内存结构的关系,虚拟机栈实验.mp4 │ 高并发编程第一阶段10讲、Thread构造函数StackSize详细讲解.mp4 │ 高并发编程第一阶段11讲、Thread构造函数StackSize详细讲解-续....

Global site tag (gtag.js) - Google Analytics