diff --git a/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java b/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java index 7e8c49c92..8e01b4f38 100644 --- a/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java +++ b/ganttzk/src/main/java/org/zkoss/ganttz/util/PreAndPostNotReentrantActionsWrapper.java @@ -27,12 +27,14 @@ import org.apache.commons.lang.Validate; */ public abstract class PreAndPostNotReentrantActionsWrapper { - private final ThreadLocal inside = new ThreadLocal() { + private static final class BooleanThreadLocal extends ThreadLocal { @Override protected Boolean initialValue() { return false; } - }; + } + + private final ThreadLocal inside = new BooleanThreadLocal(); public void doAction(IAction action) { Validate.notNull(action); @@ -49,7 +51,7 @@ public abstract class PreAndPostNotReentrantActionsWrapper { try { action.doAction(); } finally { - inside.set(false); + inside.remove(); postAction(); } }