public class ContatoreProtetto {
    private int valore;

    public synchronized void incrementa() {
        valore++;
    }

    public synchronized int leggi() {
        return valore;
    }

    public static void main(String[] args) throws InterruptedException {
        ContatoreProtetto contatore = new ContatoreProtetto();
        Runnable lavoro = () -> {
            for (int i = 0; i < 10_000; i++) {
                contatore.incrementa();
            }
        };
        Thread primo = Thread.ofPlatform().start(lavoro);
        Thread secondo = Thread.ofPlatform().start(lavoro);
        primo.join();
        secondo.join();
        System.out.println(contatore.leggi());
    }
}
