1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-25 02:27:10 +08:00

Merge pull request #1159 from vcjmhg/patch-2

此处的死锁改成进程阻塞是否会更好呢??
This commit is contained in:
Guide哥 2021-04-25 12:56:55 +08:00 committed by GitHub
commit 919d094c19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -72,7 +72,7 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
> 说明: `<clinit> ()`方法是编译之后自动生成的。
对于`<clinit> ()` 方法的调用,虚拟机会自己确保其在多线程环境中的安全性。因为 `<clinit> ()` 方法是带锁线程安全,所以在多线程环境下进行类初始化的话可能会引起死锁,并且这种死锁很难被发现。
对于`<clinit> ()` 方法的调用,虚拟机会自己确保其在多线程环境中的安全性。因为 `<clinit> ()` 方法是带锁线程安全,所以在多线程环境下进行类初始化的话可能会引起多个进程阻塞,并且这种阻塞很难被发现。
对于初始化阶段虚拟机严格规范了有且只有5种情况下必须对类进行初始化(只有主动去使用类才会初始化类)