Java vs. C#

synchronized vs. lock


Java
 
class Cache
{
    public void add(Object x) {
        synchronized (this) {
            ...
        }
    }
    public void remove(Object x) {
        synchronized (this) {
            ...
        }
    }
}

C#
 
class Cache
{
    public static void Add(object x) {
        lock (typeof(Cache)) {
            ...
        }
    }
    public static void Remove(object x) {
        lock (typeof(Cache)) {
            ...
        }
    }
}
or lock(this) {...}