...
- Avoid
synchronized(this)
and synchronized methods wherever possible. Opt for thread-safe objects such as
ConcurrentMap
, and if usingsynchronized
, apply it to the structure that must be locked:Code Block language java protected final Map<DeviceId, LinkDiscovery> discoverers = new HashMap<>(); @Override public void event(MastershipEvent event) { ... synchronized (discoverers) { if (!discoverers.containsKey(deviceId)) { discoverers.put(deviceId, new LinkDiscovery(device, packetSevice, masterService, providerService, useBDDP)); } } }
Additionally, some structures such as Hazelcast's
IMap
have per-key locks.
equals() and hashCode()
Any objects that are compared, or stored in any hash based data structure (e.g. HashSet, HashMap), should implement these methods. For objects that implement them, comparisons should use their equals()
method, and not ==
. An exception to this rule are Enums.
Naming
JSON fields should be in camel case:
Code Block { "aliasIp": "10.1.2.3" }
and not
"alias_ip"
.
Logging
The codebase uses SLF4J for logging. DO NOT use System.out.*
.
...