Moin,
habe mal eine Verständnis Frage. Die Methoden wait() und notify() können ja benutzt werden, um eine bestimmte deterministische Abfolge zu erreichen. Ich habe im Inet in einigen Beispielen gesehen, das z.b wait und notify benutzt wurden, wenn ein Schreiber eine Ressource schreiben sollte und ein Leser diese lesen sollte. Hier wurde wait und notify dann so eingesetzt,das wenn z.b das Array, auf das geschrieben wurde, voll ist, gewartet wird bis wieder platz ist(wait() ) und dann die Methode, die schreibt, durch ein notify() des Lesers benachrichtigt wurde, das sozuzusagen wieder platzt ist.
Wie würde ich das z.b in so einer Situation machen:
Ich möchte natürlich erreichen, das erst gelesen wurde, wenn set() mit dem setzen fertig ist.Und das set() erst den Wert setzt, wenn get() mit dem lesen fertig ist und das keine deadlocks auftreten.
Aber wie kommunizier ich sozusagen zwischen den 2 Methoden? Hier fehlen mir ja solche Bedingungen wie.. "Wenn das Array voll ist..dann". Könnte man das über ein boolean Flag machen?
habe mal eine Verständnis Frage. Die Methoden wait() und notify() können ja benutzt werden, um eine bestimmte deterministische Abfolge zu erreichen. Ich habe im Inet in einigen Beispielen gesehen, das z.b wait und notify benutzt wurden, wenn ein Schreiber eine Ressource schreiben sollte und ein Leser diese lesen sollte. Hier wurde wait und notify dann so eingesetzt,das wenn z.b das Array, auf das geschrieben wurde, voll ist, gewartet wird bis wieder platz ist(wait() ) und dann die Methode, die schreibt, durch ein notify() des Lesers benachrichtigt wurde, das sozuzusagen wieder platzt ist.
Wie würde ich das z.b in so einer Situation machen:
Java:
public synchronized void set(int i){
this. i = i;
}
public synchronized int get(){
return i;
}
Ich möchte natürlich erreichen, das erst gelesen wurde, wenn set() mit dem setzen fertig ist.Und das set() erst den Wert setzt, wenn get() mit dem lesen fertig ist und das keine deadlocks auftreten.
Aber wie kommunizier ich sozusagen zwischen den 2 Methoden? Hier fehlen mir ja solche Bedingungen wie.. "Wenn das Array voll ist..dann". Könnte man das über ein boolean Flag machen?