Hm. Da wird jetzt erstmal alles in der main erstellt. Das hat mit Klassen und Threads nicht viel zu tun.
Überleg’ dir, welche Methoden deine „Lager“-Klasse haben muss. Was soll man damit machen können? Man soll wohl von außen Dinge aus dieser Lager-Klasse rausnehmen können. Die werden vielleicht über einen String beschrieben. Soll man auch sagen können, wieviele Einheiten man abholen will? Oder soll man immer ALLES abholen? Davon hängt ab, wie diese Methoden aussehen müssen, z.B.
int hole(String material, int kg);
oder
int holeAlles(String material);
Soll die Lager-Classe sich „selbst“ von alleine füllen, oder soll man sich auch von außen (z.B. von dieser Basic-Klasse) füllen müssen? Im zweiten Fall bräuchte man auch eine Methode
void lagere(String material, int kg);
Damit ist (dir, hoffentlich ) schonmal klar, wie die Schnittstelle der Lager-Klasse aussehen muss.
Dann gibt es die Roboter-Klasse. Was muss die können? Sie muss von einem Lager Material abholen können. D.h. er bräuchte vielleicht eine Methode
void holeVon(Lager lager, String material, int kg);
Soll der Roboter sich selbst merken, was er sich alles abgeholt hat? Wo soll er denn das Zeug hinlegen, was er abgeholt hat? Wer sagt dem Roboter, welches Material er abholen soll? Wenn du das weißt, hast du schonmal ein etwas genaueres Bild von der Roboter-Klasse.
Dann kann man sich langsam Gedanken über die Interaktion der Klassen machen. Was soll passieren, wenn der Roboter von Lager 10 kg Metall anfordert, aber nur 8 kg da sind? Soll er dann warten, bis das Lager (von wem auch immer - von der Basic-Klasse, vielleicht?) wieder aufgefüllt wurde?
Wenn alle diese Fragen geklärt sind (und erst DANN - also wirklich NACHDEM diese Fragen geklärt sind!) kann man sich langsam Gedanken machen, ob man das ganze nun mit einem Array oder zwei ArrayLists oder eine Map oder sonstwie löst…
Vermutlich wäre es in diesem Zusammenhang dann auch hilfreich, sich z.B. mal das http://de.wikipedia.org/wiki/Erzeuger-Verbraucher-Problem anzusehen…