Позвольте мне использовать этот небольшой и простой пример:
class Sample {
    private String msg = null;
    public void newmsg(String x){
        msg = x;
    }
    public String getmsg(){
        String temp = msg;
        msg = null;
        return temp;
    }
}
Предположим, что функция newmsg() вызывается другими потоками, к которым у меня нет доступа.
Я хочу использовать метод synchonize, чтобы гарантировать, что строка msg используется только одной функцией за время. Другими словами, функция newmsg() не может работать одновременно с getmsg().