Скажите, пожалуйста, правильно ли я понял, что если вставить synchronized в сигнатуру метода, то он блокирует весь метод для других нитей, если какая-то нить его использует (использует метод у этого же объекта), а если вставить synchronized только на fruits.remove(index); другие нити смогут использовать метод и даже выведут в консоль Hello, но потом будут ждать освобождение объекта? Или я совсем понял?
public synchronized void removeFruit(int index){
          public synchronized void removeFruit(int index){
           System.out.println("Hello");
           fruits.remove(index);
       }
       }