美文网首页
类初始化方法cliinit()的线程安全性

类初始化方法cliinit()的线程安全性

作者: Shaw_Young | 来源:发表于2021-09-23 10:01 被阅读0次

对于<clinit>()方法的调用,也就是类的初始化,虚拟机会在内部确保其多线程环境中的安全性。

虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确地加锁、同步,如果多个线程同时去初始化一个类,那么只会有一个线程去执行这个类的<clinit>()方法,其他线程都需要阻塞等待,直到活动线程执行<clinit>()方法完毕。

正是因为函数<clinit>()带锁线程安全的,因此,如果在一个类的<clinit>()方法中有耗时很长的操作,就可能造成多个线程阻塞,引发死锁。并且这种死锁是很难发现的,因为看起来它们并没有可用的锁信息。

如果之前的线程成功加载了类,则等在队列中的线程就没有机会再执行<cliinit>()方法了。那么,当需要使用这个类时,虚拟机会直接返回给它已经准备好的信息。

梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。

相关文章

  • 类初始化方法cliinit()的线程安全性

    对于()方法的调用,也就是类的初始化,虚拟机会在内部确保其多线程环境中的安全性。 虚拟机会保证一个...

  • 【java并发编程实战读书总结2】线程安全与synchroniz

    线程安全性与synchronized 线程安全:多线程访问某个类时,这个类始终都能表现出正确的行为,这个类就是线程...

  • EffectiveJava第十章第五节

    线程安全性的文档化 并非出现synchronized关键字就是线程安全性文档化了。实际上,一个类支持的线程安全性有...

  • NSThread

    初始化方法 系统提供线程的三种初始化方式: 启动线程 通过 初始化方法创建的线程需要手动调用start/main...

  • Java并发编程 线程安全性

    什么是线程安全性 线程安全性:当多个线程访问某个类时,不管运行时采用何种调度方式或者这些线程将被如何交替执行,并且...

  • java并发编程实战2~3

    2 线程安全性 2.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何...

  • AFNetworking-AFURLSessionManager

    一、manager初始化 manager是类方法,工厂设计模式,不是单例哦 线程:2.0 AF 建立在常驻线程,3...

  • 【再读Java并发编程】线程安全性

    线程安全性:当多个线程访问某个类时,这个类始终表现出正确的行为,则这个类是线程安全的。编写线程安全的代码,核心在于...

  • 线程安全性

    什么是线程安全性 当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么久称这个类是线程安全的。 当多个线程...

  • Java多线程相关知识点

    线程基本知识 什么是线程安全性?当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么可以认为这个类是线程安...

网友评论

      本文标题:类初始化方法cliinit()的线程安全性

      本文链接:https://www.haomeiwen.com/subject/jygegltx.html