 
                            Recommendations
CON00-J. Use synchronization judiciously
CON01-J. Avoid using ThreadGroup APIs
CON02-J. Facilitate thread reuse by using Thread Pools
CON03-J. Do not subclass Thread if you can use a Runnable instead
Rules
CON30-J. Synchronize access to shared mutable variables
CON31-J. Always invoke the wait() method inside a loop
CON32-J. Prefer notifyAll() to notify()
CON33-J. Address the shortcomings of the Singleton design pattern
CON34-J. Avoid deadlock by requesting fine-grained locks in the proper order
CON35-J. Do not try to force thread shutdown
CON36-J. Always synchronize on the appropriate object
CON37-J. Never apply a lock to methods making network calls
CON38-J. Ensure atomicity of thread-safe code
Risk Assessment Summary
Recommendations
| Recommendation | Severity | Likelihood | Remediation Cost | Priority | Level | 
|---|---|---|---|---|---|
| CON00-J | low | unlikely | high | P1 | L3 | 
| CON01-J | low | unlikely | low | P3 | L3 | 
| CON02-J | low | probable | high | P2 | L3 | 
Rules
| Rules | Severity | Likelihood | Remediation Cost | Priority | Level | 
|---|---|---|---|---|---|
| CON30-J | medium | probable | medium | P8 | L2 | 
| CON31-J | low | unlikely | medium | P2 | L3 | 
| CON32-J | low | unlikely | medium | P2 | L3 | 
| CON33-J | low | unlikely | medium | P2 | L3 | 
| CON34-J | low | unlikely | high | P1 | L3 | 
| CON35-J | low | unlikely | medium | P2 | L3 | 
| CON37-J | low | likely | high | P3 | L3 | 
FIO35-J. Exclude user input from format strings The CERT Sun Microsystems Secure Coding Standard for Java CON00-J. Use synchronization judiciously