The locking done by the Cache object is on the per key (of the cache item) level. You can test this by changing
item2 to item1. The assumption I think is that adding items of different keys shouldn't matter, it is only concerned if concurrent call to the Add method uses the same key.