concurrency in Java
- by p1
1]What is Non-blocking Concurrency and how is it different. 
2] I have heard that this is available in Java. Are there any particular scenarios we should use this feature
3] Is there a difference/advantage of using one of these methods for a collection. What are the trade offs
class List   
{  
    private final ArrayList<String> list = new ArrayList<String>();
    void add(String newValue) 
    {
        synchronized (list)
        {
            list.add(newValue);
        }
    }
}  
OR
private final ArrayList<String> list = Collections.synchronizedMap();  
The questions are more from a learning/understanding point of view. Thanks for attention.