I’m trying to understand what makes the lock in concurrency so important if one can use synchronized (this). In the dummy code below, I can do either:

  1. synchronized the entire method or synchronize the vulnerable area (synchronized(this){...})
  2. OR lock the vulnerable code area with a ReentrantLock.

Code:

    private final ReentrantLock lock = new ReentrantLock(); 
    private static List<Integer> ints;

    public Integer getResult(String name) { 
        .
        .
        .
        lock.lock();
        try {
            if (ints.size()==3) {
                ints=null;
                return -9;
            }   

            for (int x=0; x<ints.size(); x++) {
                System.out.println("["+name+"] "+x+"https://stackoverflow.com/"+ints.size()+". values >>>>"+ints.get(x));
            }

        } finally {
            lock.unlock();
        } 
        return random;
}

8 Answers
8

Leave a Reply

Your email address will not be published. Required fields are marked *