Why synchronized block are not preemptible?
When compiling
public void syncMethod() {
synchronized(lock) {
// some code
}
}they could translate to
public void syncMethod() {
await reentrantLockAsync.lockAsync();
try {
await somecodeAsync();
} finally {
await lock.unlockAsync()
}
}