Hallo und guten tag,
schon mehrfach bin ich über das Problem gestolpert dass ich mehrere Methoden unterschiedlich zeitverzögert ausführen möchte die Zeitverzögerung sich jedoch summiert. Dazu ein kleines Beispiel:
In der Klasse RandomChar wird der Variablen "hunger" ein beliebiger Wert gegeben. Dieser erhöht sich jede Sekunde (Thread.sleep(1000)) um +1 und der Wert würd sekündlich ausgegeben. Mein Bestreben ist es nun über die Klasse.Methode "Minus.hunger" der Variablen "hunger" alle 5 Sekunden wieder vier abzuziehen jedoch arbeitet das Programm die Anweisungen nacheinander ab so dass ich die Werte nicht mehr sekündlich sondern alle sechs Sekunden ausgegeben bekomme. kann man die Methoden irgendwie parallel arbeiten lassen?
schon mehrfach bin ich über das Problem gestolpert dass ich mehrere Methoden unterschiedlich zeitverzögert ausführen möchte die Zeitverzögerung sich jedoch summiert. Dazu ein kleines Beispiel:
In der Klasse RandomChar wird der Variablen "hunger" ein beliebiger Wert gegeben. Dieser erhöht sich jede Sekunde (Thread.sleep(1000)) um +1 und der Wert würd sekündlich ausgegeben. Mein Bestreben ist es nun über die Klasse.Methode "Minus.hunger" der Variablen "hunger" alle 5 Sekunden wieder vier abzuziehen jedoch arbeitet das Programm die Anweisungen nacheinander ab so dass ich die Werte nicht mehr sekündlich sondern alle sechs Sekunden ausgegeben bekomme. kann man die Methoden irgendwie parallel arbeiten lassen?
Java:
public class RandomChar {
static int hunger = ZufallsZahl.zwischen(1, 100);
static int durst = ZufallsZahl.zwischen(1, 100);
static int zeit = ZufallsZahl.zwischen(1, 100);
static int budget = ZufallsZahl.zwischen(1, 100);
static int stimmung =ZufallsZahl.zwischen(1, 100);
public static void main(String[] args) throws InterruptedException {
for(int k=0; 60<61; k++) {
hunger = Minus.hunger(hunger);
System.out.println("Hunger: " + hunger);
System.out.println("Durst: " + durst);
System.out.println("Zeit: " + zeit);
System.out.println("Budget: " + budget);
System.out.println("Stimmung: " + stimmung);
hunger = hunger +1;
System.out.println("Hunger später: " + hunger);
durst = durst + 20;
System.out.println("Durst später: " + durst);
System.out.println("\n");
Thread.sleep(1000);
}
}
}
class ZufallsZahl {
public static int zwischen(int untereGrenze, int obereGrenze) {
int differenz = obereGrenze - untereGrenze;
int zufallZahlMath = (int) (Math.random() * differenz) + untereGrenze;
return zufallZahlMath;
}
}
class Minus {
public static int hunger(int hunger) throws InterruptedException {
hunger = hunger - 4;
Thread.sleep(5000);
return hunger;
}
}