Java Reference
In-Depth Information
public class CounterApp
{
public static void main(String[] args) throws Exception
{
ListenerObjectCreator creator =
new InstantiatingClassBasedListenerObjectCreator(
Counter.class, DoubleCounter.class);
RequestResponseBus bus =
RRiBbitUtil.createRequestResponseBusForLocalUse(creator,
true);
for(int i = 0; i < 10; i++)
{
int value = bus.send("increment");
System.out.println("" + value);
}
}
}
Wie zuvor beschrieben, wird unter der Angabe der Klassen Counter und DoubleCounter ein
ListenerObjectCreator erzeugt. Dieser wird einer statischen Methode zur Erzeugung eines
RRiBbit-Busses übergeben. Der Name der Methode createRequestResponseBusForLocalUse
zeigt, dass es sich hier um keine verteilte Anwendung handelt. Der zweite Parameter true
gibt an, dass die Referenz auf den erzeugten Bus in dem statischen Attribut der Klasse RRB
abgelegt wird, so dass man auf den Bus über die statische Methode get der Klasse RRB
Zugriff erhält, was wir aber in dieser ersten Anwendung nicht brauchen (in der zweiten
Anwendung aber schon). Im Folgenden wird dann zehn Mal die Methode send aufgerufen.
Dies ist eine der angebotenen Varianten von Sendemethoden, in der ein Hint, aber kein
Rückgabetyp angegeben wird und die ein einziges Ergebnis zurückliefert. Weitere Parame-
ter wären als Varargs möglich, werden aber hier nicht übergeben, da die Zielmethoden
increment parameterlos sind. Die Methode send ist übrigens eine generische Methode,
wobei der Rückgabetyp der Typparameter ist. Im vorliegenden Fall setzt der Compiler als
Typparameter Integer ein. Durch Auto-Unboxing kann dann der Rückgabetyp einer Variab-
len des Typs int ohne Casting zugewiesen werden. Eine Zuweisung an jeden anderen Typ
wäre ebenfalls ohne Casting möglich.
An der Ausgabe der beiden Methoden increment erkennen wir, dass beide parallel ausge-
führt werden (zwei Mal die Beginn-Meldung hintereinander und nach nur ca. 5, nicht nach
ca. 10 Sekunden zwei Mal die Endemeldung). Die Ausgabe des Hauptprogramms kann zum
Beispiel so aussehen:
1
4
6
4
5
...
Wie zu sehen ist, kann nicht vorhergesagt werden, von welchem der beiden Increment-
Aufrufe das von send zurückgelieferte Ergebnis kommt. Im ersten, vierten und fün en Auf-
ruf ist es der einfache Zähler (1, 4 und 5), im zweiten und dritten Aufruf dagegen der Dop-
pelzähler (4 und 6).
 
Search WWH ::




Custom Search