package fr.umlv.conc.exam2019;

import java.util.Arrays;
import java.util.Random;
import java.util.stream.IntStream;
import java.util.concurrent.ThreadLocalRandom;

public class Mystery {
	private final int[] tab = new int[4];
	private int index;

	public void store(int value) {
		index++;
		if (index >= tab.length) {
			index = 0;
		}
		tab[index] = value;
	}

	@Override
	public String toString() {
		return Arrays.toString(tab);
	}

	public static void main(String[] args) {
		var mystery = new Mystery();

		var nbThreads = 3;
		var nbRounds = 100;

		IntStream.range(0, nbThreads).forEach(j -> {
			new Thread(() -> {
				for (int i = 0; i < nbRounds; i++) {
					mystery.store(ThreadLocalRandom.current().nextInt(10));
					System.out.println(mystery);
				}
			}).start();
		});
	}
}
