synchronized method - set value & get value : getting java.util.ConcurrentModificationException

66 views
Skip to first unread message

Santos

unread,
Jun 19, 2016, 1:19:24 PM6/19/16
to spymemcached
I have written a synchronized method inside that 1st I am retrieving the value then after addition in the retrieved object, I again storing value against same key in the memcached.
This synchronized method being called from multiple threads concurrently.

I am getting java.util.ConcurrentModificationException on Hashmap inside the MemcacheClient class file.

Exception :
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at java.util.HashMap$KeyIterator.next(HashMap.java:828)

Sample code :

Public class MemcahceThreadUtil {
Public synchronized void memcahceDataProcessing (String key, TermBean objBean) {
Object retrieveObject = MemcacheUtil.retrieve(key); // Memcache implementation for get value

HashMap<String, TermBean> objValue = (HashMap<String, TermBean>)retrieveObject ;

objValue.add(key, objBean);

MemcacheUtil.addValue(key, objValue); // Memcache implementation for set value
}
}

public class CreateThreadRunnableExample implements Runnable{

private MemcahceThreadUtil objMemcahceThreadUtil;
private String key;
private TermBean objBean;

public CreateThreadRunnableExample (MemcahceThreadUtil objMemcahceThreadUtil, String key, TermBean objBean) {
this.objMemcahceThreadUtil =  objMemcahceThreadUtil;
this.key = key;
this.objBean = objBean;
 
public void run(){
objMemcahceThreadUtil.memcahceDataProcessing(key, objBean);
}
}


public static void main(String[] args) {

MemcahceThreadUtil objMemcahceThreadUtil = new MemcahceThreadUtil();

for (int i = 0; i < 10; i++) { 
String key = getValue;//
TermBean data = getValue;  //
 
CreateThreadRunnableExample objRunnable = new CreateThreadRunnableExample(objMemcahceThreadUtil, key, data);

Thread t = new Thread(objRunnable);
t.start();
}

Could you please advise why the ConcurrentModificationException is occurring ? whether it's due to concurrent modification on same object or there is some limitation with memcached implementation.
Tried removing synchronized block then applied ReentrantReadWriteLock concept but same problem.
How to fix this issue. Please help on this,

Santos

unread,
Jun 20, 2016, 10:20:38 AM6/20/16
to spymemcached
Reply all
Reply to author
Forward
0 new messages