Threads Geschwindigkeit der Befehle auf verschiedenen PCs gleich machen

Blackhole16

Bekanntes Mitglied
Ich bin gerade dabei ein kleines Spiel zu entwickeln. Dies habe ich bisher auf einem Netbook gemacht, welches ein Intel Atom hat. u.a. habe ich einen ButtonCountdownThread geschrieben, der halt einen bestimmten Countdown auf einem Button anzeigt. Ich habe deisen auf dem netbook genau so eingestellt, dass 1sec auch einer sec entspricht und habe herausgefunden, dass für JButton.setText(String s) etwa 20ms gebraucht werden.
Also hier der relevante Code:

Java:
for (int i = cd; i > 0; i-=70) {
	b.setText((i/1000) + " s");
	try {
		Thread.sleep(50);
	} catch (InterruptedException e) {e.printStackTrace();}
}

Nun habe ich dies auf meinem Gamer-PC (siehe Signatur) getestet und da vergehen 3secs des CDs in nur 2 Sekunden. Auch die Animationen (ziehmlich viele Befehle) läuft viel schneller ab, was das ganze Spielgeschehen unpassender macht.

Deshalb wollte ich fragen, ob ich irgendwie einstellen kann, dass diese Befehle auf unterschiedlichen PCs glaich lange dauern. Gibt es da von Java aus selber etwas oder muss ich das irgendwie kompliziert erstellen?

Ich habe schon überlegt, ob vielleicht ein Timer-Thread sinvoll wäre, mit dem ich dann feststellen kann, wie lange der Thread noch schlafen muss, damit er wieder "in time" ist. Das scheint mir aber sehr kompliziert zu werden, weswegen ich lieber hier erst einmal um Hilfe bitten möchte, ob es auch etwas einfacheres gibt.

Danke schon im Voraus für eure Mitarbeit.
mfg
BH16
 

Cola_Colin

Top Contributor
Das Konzept sieht -mal eben so hingeschrieben- so aus:


Java:
public static final int DESIRED_FRAME_TIME = 1000/60;

[...]

long time = System.currentTimeMillis();
long dt = 0;

while(true){
time = System.currentTimeMillis();
doWhateverYouWantToDo(dt);
dt = System.currentTimeMillis() - time;

if (dt < DESIRED_FRAME_TIME) {
  Thread.sleep(DESIRED_FRAME_TIME - dt);
  dt = System.currentTimeMillis() - time;
}

}



[...]

private void doWhateverYouWantToDo(int dt) {
  // hier deine Spiellogik ausführen, dabei beachten, dass seit dem letzten Aufruf dt ms vergangen sind. 
//D.h. willst du, dass pro Sekunde einmal etwas blinkt brauchst du z.B. einen zähler, auf den du dt draufaddierst.
//Sobald der bei 1000 ist, setzt du ihn wieder auf 0 und lässt es einmal blinken.
}

EDIT:
so jetzt ist es auch richtig, hoffe ich xD
 
Zuletzt bearbeitet:

Blackhole16

Bekanntes Mitglied
na da war mein ansatz ja gar nicht so schlecht, oder? ;D

Danke, ich habe es modifiziert übernommen, jetzt ist es kein Problem. Ich habe festgestellt, dass mein Gamerpc üfr die Befehle 0-1 ms braucht, mein netbook schon 4-7. Ist doch schon ein gewaltiger Unterschied...

Danke auf jeden Fall an Beide.

mfg
BH16
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
O Methoden - Geschwindigkeit Java Basics - Anfänger-Themen 7
F Variablen Mathematik - Vektorielle Geschwindigkeit Java Basics - Anfänger-Themen 19
S Methoden Vergleichen von zwei Listen in der Geschwindigkeit von O(n+m) Java Basics - Anfänger-Themen 32
T Auslesen der Zwischenablage - Optimierung Geschwindigkeit Java Basics - Anfänger-Themen 6
E Geschwindigkeit eines sich bewegenden Kreises Java Basics - Anfänger-Themen 6
M XOR und Geschwindigkeit Java Basics - Anfänger-Themen 6
G String Speicherplatz und Geschwindigkeit Java Basics - Anfänger-Themen 4
RudiRüssel Befehle - Maschinenprogramme Java Basics - Anfänger-Themen 6
H Befehle in einem Menü aktivieren Java Basics - Anfänger-Themen 1
D import Befehle Java Basics - Anfänger-Themen 3
F Linux Befehle zum Übersetzen Java Basics - Anfänger-Themen 1
L Linux Befehle unter Windows in Eclipse ausführen Java Basics - Anfänger-Themen 3
D Erste Schritte Weitere Befehle implementieren Java Basics - Anfänger-Themen 27
T befehle unterschiedlicher anzahl an strings wiedergeben Java Basics - Anfänger-Themen 2
RowdyN Methoden Befehle in zufälliger Reihenfolge ausführen lassen Java Basics - Anfänger-Themen 5
D Input/Output Mehrere Befehle nacheinander ausführen Java Basics - Anfänger-Themen 20
L Text/Befehle zu Programmen senden Java Basics - Anfänger-Themen 1
C Java und "normale" Befehle Java Basics - Anfänger-Themen 3
M Input/Output Allg. Befehle an die cmd.exe senden Java Basics - Anfänger-Themen 9
N Mit Java Befehle auf Konsole ausführen Java Basics - Anfänger-Themen 4
F alle 100ms Befehle ausführen Java Basics - Anfänger-Themen 26
S Befehle in ProcessBuilder nachschieben Java Basics - Anfänger-Themen 2
J Befehle aus anderen Klassen ausführen Java Basics - Anfänger-Themen 8
F Befehle von Java class ausführen Java Basics - Anfänger-Themen 3
F Befehle wiederholen Java Basics - Anfänger-Themen 7
G Kombination zweier Befehle (Preis festlegen & Rabatt berechnen) Java Basics - Anfänger-Themen 3
D Input/Output Stringbuffer Befehle bei Konvertierung in String Java Basics - Anfänger-Themen 19
C Nach Java-Installation sind Befehle erfolglos Java Basics - Anfänger-Themen 4
J Unklare Befehle Java Basics - Anfänger-Themen 4
K .bat Dateien starten, Ausgabe einlesen und Befehle übergeben Java Basics - Anfänger-Themen 32
H Befehle an andere Programme Java Basics - Anfänger-Themen 8
M Befehle der Eingabeaufforderung Java Basics - Anfänger-Themen 2
S return(Bedingung) ? [mehrere Befehle] Java Basics - Anfänger-Themen 5
M Umgebungsvariable gesetzt, aber nicht alle Befehle ausführbar Java Basics - Anfänger-Themen 6
M TextWrangler/VIM- Manche Befehle werden nicht farblich hervorgehoben Java Basics - Anfänger-Themen 3
S Mehrere Return-Befehle in einer Methode Java Basics - Anfänger-Themen 23
G Eigene Klasse für externe Befehle - Warten auf Prozesse Java Basics - Anfänger-Themen 6
N 2 Befehle zu einem machen Java Basics - Anfänger-Themen 10
K Shell Befehle mit Java aufrufen Java Basics - Anfänger-Themen 5
G CMD Befehle übergeben Java Basics - Anfänger-Themen 2
J Java Konsolenprogramm Befehle(Optionen) übergeben Java Basics - Anfänger-Themen 7
Blackskyliner Befehle an einen Thread senden? Java Basics - Anfänger-Themen 2
K Wieviele Befehle pro .java Datei Java Basics - Anfänger-Themen 4
C Befehle finden / Befehle richtig suchen Java Basics - Anfänger-Themen 5
E Befehle Java Basics - Anfänger-Themen 3
D MS Dos Befehle mit java Java Basics - Anfänger-Themen 3
G Falsche Java befehle, doch was ist falsch? Java Basics - Anfänger-Themen 9
D Win98 erkennt keine java Befehle.Umgebungsvariablen falsch? Java Basics - Anfänger-Themen 7
B Alt-Befehle Java Basics - Anfänger-Themen 4
C System.exit(int) und andere ähnliche Befehle Java Basics - Anfänger-Themen 5
R MS-DOS-Befehle ausführen Java Basics - Anfänger-Themen 11
S Befehle an externe Programme Java Basics - Anfänger-Themen 4
L Dos Befehle via Java Java Basics - Anfänger-Themen 4
MoxMorris Einige Methoden aus verschiedenen Klassen nacheinander auszuführen läuft seltsam Java Basics - Anfänger-Themen 2
C Parameter in verschiedenen Anzahl und Typen Java Basics - Anfänger-Themen 6
I Verschiedenen WebApp kommunizieren lassen Java Basics - Anfänger-Themen 1
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
S Arraylist<Object> mit verschiedenen Objects ausgeben Java Basics - Anfänger-Themen 3
P Arrays mit verschiedenen Längen miteinander dividieren. Java Basics - Anfänger-Themen 1
W Mehrfach das gleiche Attribut für ein Objekt erzeugen (mit verschiedenen Werten) Java Basics - Anfänger-Themen 2
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
A Methoden Array aus verschiedenen Methoden bearbeiten bzw. öffnen Java Basics - Anfänger-Themen 18
B Automatisch Objekte erzeugen mit verschiedenen Namen Java Basics - Anfänger-Themen 4
L Dynamische Anzahl an Arrays mit verschiedenen Namen erzeugen Java Basics - Anfänger-Themen 6
J Gleiche Methode in 2 verschiedenen Klassen - Lösung ? Java Basics - Anfänger-Themen 8
scratchy1 Argumente mit verschiedenen Schleifen ausgeben Java Basics - Anfänger-Themen 3
R OOP Instanzierung in verschiedenen Klassen Java Basics - Anfänger-Themen 8
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
T Classpath Zwei gleiche Dateinamen in verschiedenen Projekten möglich? Java Basics - Anfänger-Themen 13
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
I Brauche Denkanstoß: Weitergabe von Kontaktinfos aus verschiedenen Kontaktformularen von Webseiten Java Basics - Anfänger-Themen 2
D Objekte mit verschiedenen Attributen erstellen Java Basics - Anfänger-Themen 3
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
A Eine Variable in verschiedenen Ereignisprozeduren benutzen Java Basics - Anfänger-Themen 7
N Verweise auf Variablen in verschiedenen Threads Java Basics - Anfänger-Themen 4
J JLabels in schleife erzeugen mit verschiedenen namen? Java Basics - Anfänger-Themen 5
H Java auf verschiedenen Plattformen Java Basics - Anfänger-Themen 3
I Ausgabe in verschiedenen Entwicklungsumgebungen anders Java Basics - Anfänger-Themen 6
L Threads Thread aus verschiedenen Klassen ansprechen Java Basics - Anfänger-Themen 11
J Probleme mit verschiedenen Private Klassen Java Basics - Anfänger-Themen 3
A Methode aus verschiedenen Klassen aufrufen Java Basics - Anfänger-Themen 8
T Dynamisches abarbeiten von statischen Methode aus verschiedenen Klassen. Java Basics - Anfänger-Themen 5
U Objekte in Array erstellen und Methode in verschiedenen klassen aufrufen Java Basics - Anfänger-Themen 5
M Anwendung in verschiedenen JREs Java Basics - Anfänger-Themen 42
C jar Datei auf verschiedenen Systemen ausführen Java Basics - Anfänger-Themen 7
SheldoN Töne abspielen auf verschiedenen Buttons Java Basics - Anfänger-Themen 17
J verschiedene Anweisungen bei verschiedenen Zuständen Java Basics - Anfänger-Themen 9
G String mit verschiedenen Zeichen analysieren Java Basics - Anfänger-Themen 5
K Datentypen Gleiche Zufallszahlen in verschiedenen Datenstrukturen Java Basics - Anfänger-Themen 6
T ArrayList mit verschiedenen Datentypen verhindern Java Basics - Anfänger-Themen 8
R Array aus verschiedenen Datentypen Java Basics - Anfänger-Themen 29
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
K Collections Wie kann Ich eine Hashmap mit verschiedenen Hashsets füllen. Java Basics - Anfänger-Themen 4
K OOP Variablen aus verschiedenen Klassen Java Basics - Anfänger-Themen 4
E Auf Variablen in verschiedenen Klassen zugreifen? Java Basics - Anfänger-Themen 4
J OOP Ausgabe verschiedener Variabeln aus verschiedenen Subclasses Java Basics - Anfänger-Themen 2
Z Geschwindigkeitsunterschied bei verschiedenen Schreibweisen Java Basics - Anfänger-Themen 4
F Gleiche JUnit-Tests automatisert mit verschiedenen Methoden ausführen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben