O que significa a palavra-chave synchronized em Java? Explique em termos simples com exemplos
Olá, colegas! Sou novo em Java e não consigo entender o que a palavra-chave `synchronized` faz. Li a documentação, mas parece muito complicada. \n\nEu tenho uma classe simples `Counter` que incrementa um contador em várias threads. Eu esperava que cada thread adicionasse 1000 ao contador total, mas o resultado é sempre diferente: ora 1987, ora 2003, embora devesse ser exatamente 2000 (duas threads de 1000). Aqui está meu código:\n\n```java\npublic class Counter {\n private int count = 0;\n\n public void increment() {\n count++;\n }\n\n public int getCount() {\n return count;\n }\n}\n\npublic class Main {\n public static void main(String[] args) throws InterruptedException {\n Counter counter = new Counter();\n\n Thread t1 = new Thread(() -> {\n for (int i