Question: I am using an alert to perform a Segue to another view.

```
                let defaultAction = UIAlertAction(title: "Proceed", style: .Default, handler: { (UIAlertAction) -> Void in

                    performSegueWithIdentifier("proceed", sender: self)

                })

```

I just can't figure out why I get the error: 

```
Extra argument 'sender' in call

```

The sender should be just self, right? 
This error is driving me crazy for hours now, I can't figure out what's wrong! 
Any help is appreciated! Thanks!

Answer: 
The great thing about open source is you can just look up [the source code](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/ConcurrentHashMap.java)! [This bit](http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/concurrent/ConcurrentHashMap.java#ConcurrentHashMap.Segment) is particularly relevant.

The concurrency in ConcurrentHashMap is quite intricate - it breaks the contents up into `Segment`s to avoid locking the whole table, and uses `volatile` fields to allow lock-free concurrent reads.
Two main features of ConcurrentHashMap is:

* While writing on ConcurrentHashMap, locks only a part of the map
* Reads can generally happened without locking.

its possible to have two parallel threads writing to the **ConcurrentHashMap** at the same time. As per the default implementation of ConcurrentHashMap, atmost 16 threads can write & read in parallel. But the worst case is, if the two objects lie in the same segment or partition of **ConcurrentHashMap**, then parallel write would not be possible.