7
7
8
8
import java .util .HashMap ;
9
9
import java .util .Map ;
10
+ import java .util .concurrent .ConcurrentHashMap ;
10
11
import java .util .concurrent .atomic .AtomicInteger ;
11
12
12
13
/**
@@ -68,14 +69,14 @@ interface OnDestroyListener {
68
69
abstract class AbstractScriptEngine <S extends ScriptSource > implements ScriptEngine <S > {
69
70
70
71
71
- private Map <String , Object > mTags = new HashMap <>();
72
+ private Map <String , Object > mTags = new ConcurrentHashMap <>();
72
73
private OnDestroyListener mOnDestroyListener ;
73
- private boolean mDestroyed = false ;
74
+ private volatile boolean mDestroyed = false ;
74
75
private Throwable mUncaughtException ;
75
76
private volatile AtomicInteger mId = new AtomicInteger (ScriptExecution .NO_ID );
76
77
77
78
@ Override
78
- public synchronized void setTag (String key , Object value ) {
79
+ public void setTag (String key , Object value ) {
79
80
if (value == null ) {
80
81
mTags .remove (key );
81
82
} else {
@@ -84,22 +85,22 @@ public synchronized void setTag(String key, Object value) {
84
85
}
85
86
86
87
@ Override
87
- public synchronized Object getTag (String key ) {
88
+ public Object getTag (String key ) {
88
89
return mTags .get (key );
89
90
}
90
91
91
92
@ Override
92
- public synchronized boolean isDestroyed () {
93
+ public boolean isDestroyed () {
93
94
return mDestroyed ;
94
95
}
95
96
96
97
@ CallSuper
97
98
@ Override
98
- public synchronized void destroy () {
99
- mDestroyed = true ;
99
+ public void destroy () {
100
100
if (mOnDestroyListener != null ) {
101
101
mOnDestroyListener .onDestroy (this );
102
102
}
103
+ mDestroyed = true ;
103
104
}
104
105
105
106
public String cwd () {
0 commit comments