我正在使用 JSR223 ScriptEngine ( JAV8 ),它本身不是线程安全的。由于我需要多个线程才能访问 ScriptEngine,因此每个 ScriptEngine 都属于一个 EngineContext 对象。这些 EngineContexts 再次具有一个 ReentrantLock,各个线程在访问 ScriptEngine 之前获取它。
我遇到的问题是线程成功获取了锁,但是当两个线程调用它时,有时我仍然会遇到 JVM 崩溃(著名的 SIGSEGV (0xb))。
作为概述,这里是锁定过程的一些伪代码
Thread needs the ScriptEngine
Thread waits and acquires lock
Thread uses the ScriptEngine (Methods: eval, put)
Thread releases the lock
Thread does something else
我真的不确定,这里的问题是什么。