Skip to main content

Example of "ConcurrentModificationException" in multithreading and How to avoid?

When this exception happen?
This exception when a collection is modifying when it's being traversed.

Example:


OUTPUT
Key: 1
Exception in thread "Thread-0" java.util.ConcurrentModificationException
 at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
 at java.util.HashMap$KeyIterator.next(Unknown Source)
 at jbohn.thread.JConcurentException$1.run(JConcurentException.java:26)
 at java.lang.Thread.run(Unknown Source)
Avoid this problem:
1. Clone a temporary list when loop a collection. This option work well for small list, but performance is affected.
//Copy key set to new list
ArrayList<Integer> keyList = new ArrayList<>(maps.keySet());
for (Iterator iterator = keyList.iterator(); iterator.hasNext();) {
   Integer integer = (Integer) iterator.next();
   System.out.println("Key: " + integer);
}





2. Using ConcurrentHashMap and CopyOnWriteArrayList for JDK 1.5 and above
private static final Map<Integer, String> maps = new ConcurrentHashMap<Integer, String>();


jbohn.blogspot.com

Comments

Popular posts from this blog

How to Install SQL Server on MacOS with docker

 I'm writing a small tut for who need to install SQL Server on macOS using docker Step 1: Download the SQL Server Image sudo docker pull mcr.microsoft.com/mssql/server:2019-latest Step 2: Launch the SQL Server Image in Docker docker run -d --name example_sql_server -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Pass.word-123' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest Step 3: Check the SQL Server Docker Container docker ps -a Step 4: Install SQL Server Command-Line Tool sudo npm install -g sql-cli Step 5: Connect to SQL Server  5.1 Using Command mssql -u sa -p Pass.word-123 5.2: Using VSCode to connect to sql server Using the extension SQL Server (mssql)

What is API Gateway?

  What does API gateway do? The diagram below shows the detail. Step 1 - The client sends an HTTP request to the API gateway. Step 2 - The API gateway parses and validates the attributes in the HTTP request. Step 3 - The API gateway performs allow-list/deny-list checks. Step 4 - The API gateway talks to an identity provider for authentication and authorization. Step 5 - The rate limiting rules are applied to the request. If it is over the limit, the request is rejected. Steps 6 and 7 - Now that the request has passed basic checks, the API gateway finds the relevant service to route to by path matching. Step 8 - The API gateway transforms the request into the appropriate protocol and sends it to backend microservices. Steps 9-12 : The API gateway can handle errors properly, and deals with faults if the error takes a longer time to recover (circuit break). It can also leverage ELK (Elastic-Logstash-Kibana) stack for logging and monitoring. We sometimes cache data in the API gatew...