Scritta scorrevole (esempio sull’utilizzo di synchronized)

ScrittaScorrevole.java

public class ScrittaScorrevole {

	public static void main(String[] args) {
		new NegozioChiuso("21 agosto 2017").start();
		new NegozioAperto("22 agosto 2017").start();
	}
}

NegozioAperto.java

public class NegozioAperto extends Thread {

	private String data;

	public NegozioAperto(String data) {
		this.data = data;
	}

	@Override
	public void run() {
		Messaggio.scrive("Il negozio aprirà il " + data);
	}
}

NegozioChiuso.java

public class NegozioChiuso extends Thread {

	private String data;

	public NegozioChiuso(String data) {
		this.data = data;
	}

	@Override
	public void run() {
		Messaggio.scrive("Il negozio resterà chiuso fino al " + data);
	}
}

Messaggio.java

public class Messaggio {
	
	public static synchronized void scrive(String s) {
		for (int i=0; i<s.length(); i++) {
			System.out.print(s.charAt(i));
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
			}
		}
		System.out.println();
	}
}