解决死锁问题最好的方法还是规避死锁。破坏死锁产生的条件
互斥锁(下):如何用一把锁保护多个资源
可以用一把锁来保护多个资源,但是不能用多把锁来保护一个资源。解决原子性问题,是要保证中间状态对外不可见。
互斥锁(上):解决原子性问题
synchronized是Java在语言层面提供的互斥原语。
Java内存模型:看Java如何解决可见性和有序性问题
Happens-Before规则
可见性、原子性和有序性问题:并发编程Bug的源头
缓存带来可见性问题,线程切换带来原子性问题,编译优化带来有序性问题。
SubstrateVM-AOT编译框架
GraalVM中的Ahead-Of-Time(AOT)编译框架SubstrateVM
Truffle:语言实现框架
Truffle是一个用Java写就的语言实现框架。基于Truffle的语言实现仅需用Java实现词法分析、语法分析以及针对语法分析所生成的抽象语法树(Abstract Syntax Tree, AST)的解释执行器,便可以享用由Truffle提供的各项运行时优化(Partial Evaluation以及节点重写,Polyglot特性)。
Graal:用Java编译Java
Graal是一个用Java写就的、并能够将Java字节码转换成二进制码的即时编译器。它通过JVMCI与JVM交互,响应由后者发出的编译请求、完成编译并部署编译结果。
Java Agent与字节码注入
Java agent与字节码注入
JNI的运行机制
Java Native Interface