Skip to content

Commit

Permalink
提交多线程遍历时,线程回调出现修改集合异常,未考虑并发问题
Browse files Browse the repository at this point in the history
  • Loading branch information
xuhaotony committed Oct 19, 2018
1 parent 5375f78 commit c58a178
Showing 1 changed file with 6 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.io.Serializable;
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

import static com.xuhao.android.libsocket.sdk.client.action.IAction.ACTION_CONNECTION_FAILED;
import static com.xuhao.android.libsocket.sdk.client.action.IAction.ACTION_CONNECTION_SUCCESS;
Expand Down Expand Up @@ -59,7 +60,7 @@ public class ActionDispatcher implements IRegister<ISocketActionListener, IConne
/**
* 除了广播还支持回调
*/
private HashMap<ISocketActionListener, BroadcastReceiver> mResponseHandlerMap = new HashMap<>();
private ConcurrentHashMap<ISocketActionListener, BroadcastReceiver> mResponseHandlerMap = new ConcurrentHashMap<>();
/**
* 上下文
*/
Expand Down Expand Up @@ -118,9 +119,7 @@ public void onReceive(Context context, Intent intent) {
ACTION_WRITE_THREAD_SHUTDOWN,
ACTION_WRITE_THREAD_START,
ACTION_PULSE_REQUEST);
synchronized (mResponseHandlerMap) {
mResponseHandlerMap.put(socketResponseHandler, broadcastReceiver);
}
mResponseHandlerMap.put(socketResponseHandler, broadcastReceiver);
}
}
return mManager;
Expand All @@ -133,11 +132,9 @@ private IConnectionManager unRegisterReceiver(BroadcastReceiver broadcastReceive

@Override
public IConnectionManager unRegisterReceiver(ISocketActionListener socketResponseHandler) {
synchronized (mResponseHandlerMap) {
BroadcastReceiver broadcastReceiver = mResponseHandlerMap.get(socketResponseHandler);
mResponseHandlerMap.remove(socketResponseHandler);
unRegisterReceiver(broadcastReceiver);
}
BroadcastReceiver broadcastReceiver = mResponseHandlerMap.get(socketResponseHandler);
mResponseHandlerMap.remove(socketResponseHandler);
unRegisterReceiver(broadcastReceiver);
return mManager;
}

Expand Down

0 comments on commit c58a178

Please sign in to comment.