ConcurrentHashMap is designed for concurrency and improves performance while Collections.synchronizedMap(map) which is non-synchronized by sort can be synchronized by applying a wrapper using Collections.synchronizedMap(map). The most typical difference between ConcurrentHashMap and synchronized map in Java is that ConcurrentHashMap doesn't support null keys or null values while synchronized HashMap supports one null key.
For your requirements, use ConcurrentHashMap. It identifies concurrent modification of the Map from various threads without the need to block them. Collections.synchronizedMap(map) produces a blocking Map that will degrade performance, albeit assure consistency (if used properly).
Use the second option if you need to assure data flexibility, and each thread requires to have an up-to-date view of the map. Use the first if performance is critical, and every thread only inserts data to the map, which shows happening less frequently.