safepoint采用的是一种协作式的方式,就是当它发起了safepoint的请求后,那些Java线程来检测这个请求,然后再把自己给暂停,而不是通过强迫式,例如VMthread调用某一个API强行把一个thread给占进,强行暂停也许可以很快的把种线程给暂停住,但是这里会有很多不确定的状态在里面,安全性就很容易形成问题。 Hotspot是所以就采用了这种协作式的方式,每个Java线程它能够及时的判断出来 safepoint的请求,能够到一个他自认为可以安全的一个点上把自己给停下来。 与此同时,既然是协作式,就是说这些Java线程怎样能够确保它能够及时的响应,因为有可能在做自己很复杂的业务逻辑,什么时候去检查 safepoint,做这么多的检查,会不会影响到 Java本身的性能,这些都是需要综合考虑的一件事。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。