G
Guest
Gast
Hab hier diese Aufgabenstellung:
Nun bin ich mir nicht ganz im klare darüber ob die Klasse "Briefkasten" Runnable implementieren muss, kann ich wait und notifyAll überhaupt benutzen wenn ich Runnable nicht implementiere?
Mein erster Entwurf der Klasse seiht so aus:
Das ganze soll dann später in einer Implementierung des "ziege, wolf, kohlkopf, bauer am fluss-problem" anwendung finden.
Schreiben Sie eine Klasse für einen Briefkasten. Das ist eine Warteschlange, in der man jederzeit etwas
hineinlegen kann. Wenn man aber eine Nachricht braucht, muss man warten bis eine ankommt. Verwenden Sie
hierzu die Bibliotheksklasse ArrayList und die Primitive synchronized, wait() und notifyAll().
Nun bin ich mir nicht ganz im klare darüber ob die Klasse "Briefkasten" Runnable implementieren muss, kann ich wait und notifyAll überhaupt benutzen wenn ich Runnable nicht implementiere?
Mein erster Entwurf der Klasse seiht so aus:
Code:
public class Briefkasten
{
private ArrayList<Message> al;
public Briefkasten ()
{
al = new ArrayList<Message>();
}
public synchronized void put(Message message)
{
if (message == null)
throw new NullPointerException();
al.add(message);
}
public synchronized Message getMessage() throws InterruptedException
{
if (al.isEmpty())
return null;
Message m = al.get(0);
remove();
return m;
}
private synchronized void remove()
{
al.remove(0);
}
}
Das ganze soll dann später in einer Implementierung des "ziege, wolf, kohlkopf, bauer am fluss-problem" anwendung finden.