concurrency in Java
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.
concurrency in Java
===

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.