Timeout

Status
Nicht offen für weitere Antworten.

DomFor

Mitglied
hi
kann mir jemand sagen wie ich ein timeout mache?
habe eine slideshow gemacht, welche allerdings zu schnell abläuft.
gruss
 

me.toString

Bekanntes Mitglied
und was hat ein timeout mit deiner zu schnellen slideshow zu tun ???
... etwas mehr Info wäre nett !
... willst du etwa eine Pause in die Show einbauen ... oder wie oder was ??
 

Nobody

Top Contributor
wenn jemand mal das gleiche problem hat:
der exakte code zum warten lautet:
Code:
try{
  Thread.sleep(zeit in ms);
}
catch (InterruptedException e) { }

das try catch gebilde MUSS genutzt werden. eine alternative wäre es den rechner sinnlos zu beschäftigen:
zb eine zählschleife die von 1 bis 10k und in ihr eine variable erhöht wird. sollte man hier kann die grenze der datenwerte kommen, hilft die kombination von mehreren zählschleifen. das ganze ist zwar nicht sehr elegant aber funktioniert wunderbar
 

me.toString

Bekanntes Mitglied
Nix gegen dich nobody ... aber der Tipp mit den Schleifen ist nicht gut !!! ... die Zeit, die in den "Sinnlosschleifen" verbracht wird, ist abhängig von der Rechnergeschwindigkeit ... also wird die Wartezeit von Jahr zu Jahr kürzer werden, da die Rechner immer schneller werden !
Also: Warteschleifen IMMER mit Thread.sleep() machen ... denn da wird korrekt gewartet.
Alternativ könnte man sich die Methode sleep auch selber schreiben ( wenn man keinen Bock auf Thread.sleep() hat ):

Code:
public void sleep( long ms ){

   long first = System.currentTimeMillis();
   while( true ){
   if( System.currentTimeMillis() >= ( first + ms ) ){
      break;
   }
}

Aber ich denke, dass Java das etwas eleganter löst ... zumindest ist da der Rechner nicht die ganze Zeit mit den zeitvergleichen ausgelastet !!
 

gustav

Aktives Mitglied
Da muss ich dann auch meinen Senf dazu geben.

Aktives Warten ist immer schlecht - denn damit stiehlt man anderen Prozessen die Rechenzeit. Das ist im Normalfall nicht besonders schlimm, wenn man aber mal zeitkritische Abläufe behandeln will und hat solche Konstrukte dann ist es unnötiger Aufwand.
Alternativ kann man auch Object.wait(time) anwenden. Falls man dann noch andere Bedingungen ausser der Zeit hat, nutzt man den wait/notify Mechanismus zum aufwecken.

Code:
      while (Bedingung nicht erfüllt UND/ODER noch Zeit ) 
      {
        try { wait( ZEIT) ; }
        catch (InterruptedException e) { ...... }
      }


      // Aufwecken - z.B. wenn eine Bedingung eingetreten ist (z.B. Tastendruck)
      notify()
        // oder alle "Schlafenden" wecken
      notifyAll()
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben