Hé, ik heb deze code. Ik wil mijn programma een paar seconden uitstellen en “scannen …” weergeven
Hier is wat ik heb. Dit compileert, maar laat niets uit
if (i==1){
try {
Thread.sleep(1);
} catch (InterruptedException ie)
{
System.out.println("Scanning...");
}
}
Alvast bedankt
Ik heb int i = 1 al eerder
Antwoord 1, Autoriteit 100%
Als u wilt pauzeren, gebruik dan java.util.concurrent.TimeUnit
:
TimeUnit.SECONDS.sleep(1);
Slaap gedurende één seconde of gedurende 10 minuten
TimeUnit.MINUTES.sleep(10);
of draad slapen
try
{
Thread.sleep(1000);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
Zie ook de officiële documentatie
TimeUnit.SECONDS.sleep()
ZAL BELEID Thread.sleep
. Het enige verschil is de leesbaarheid en het gebruik van tijdUnit is waarschijnlijk gemakkelijker te begrijpen voor niet-duidelijke duur.
Maar als u uw probleem wilt oplossen
int timeToWait = 10; //second
System.out.print("Scanning")
try {
for (int i=0; i<timeToWait ; i++) {
Thread.sleep(1000);
System.out.print(".")
}
} catch (InterruptedException ie)
{
Thread.currentThread().interrupt();
}
Antwoord 2, autoriteit 22%
Thread.sleep()
neemt het aantal milliseconden in beslag om te slapen, niet seconden.
Een milliseconde slapen is niet merkbaar. Probeer Thread.sleep(1000)
om een seconde te slapen.
Antwoord 3, autoriteit 17%
Dit is trouwens in een mouseEvent
Als dit zich in een Swing GUI bevindt, verwijder dan alle aanroepen naar Thread.sleep(...)
, aangezien dit de hele GUI in de slaapstand kan brengen, waardoor deze onbruikbaar wordt. Gebruik in plaats daarvan een Swing Timer om eventuele vertragingen in de GUI te produceren, terwijl de grafische weergave nog steeds wordt bijgewerkt.
U wilt ook System.out.println(...)
-aanroepen vermijden, behalve bij het debuggen, en in plaats daarvan gebruikersmeldingen weergeven in de GUI zelf, misschien in een status JLabel of als een berichtvenster.
Antwoord 4, autoriteit 17%
Java:
Voor het berekenen van tijden gebruiken we deze methode:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public static String getCurrentTime() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
return sdf.format(cal.getTime());
}
Tweede:
import java.util.concurrent.TimeUnit;
System.out.println("Start delay of 10 seconds, Time is: " + getCurrentTime());
TimeUnit.SECONDS.sleep(10);
System.out.println("And delay of 10 seconds, Time is: " + getCurrentTime());
Uitvoer:
Startvertraging van 10 seconden, Tijd is: 14:19:08
En vertraging van 10 seconden, Tijd is: 14:19:18
Minuten:
import java.util.concurrent.TimeUnit;
System.out.println("Start delay of 1 Minute, Time is: " + getCurrentTime());
TimeUnit.MINUTES.sleep(1);
System.out.println("And delay of 1 Minute, Time is: " + getCurrentTime());
Uitvoer:
Startvertraging van 1 minuut, tijd is: 14:21:20
En vertraging van 1 minuut, tijd is: 14:22:20
Milliseconden:
import java.util.concurrent.TimeUnit;
System.out.println("Start delay of 2000 milliseconds, Time is: " +getCurrentTime());
TimeUnit.MILLISECONDS.sleep(2000);
System.out.println("And delay of 2000 milliseconds, Time is: " + getCurrentTime());
Uitvoer:
Startvertraging van 2000 milliseconden, tijd is: 14:23:44
En vertraging van 2000 milliseconden, Tijd is: 14:23:46
Of:
Thread.sleep(1000); //milliseconds
Antwoord 5, autoriteit 11%
Je hebt System.out.println("Scanning...")
in een catch-blok.
Wil je dat eens proberen?
Antwoord 6, autoriteit 11%
new Timer().schedule(new TimerTask() {
@Override
public void run() {
if (getActivity() != null)
getActivity().runOnUiThread(() -> tvCovidAlert.startAnimation(animBounce));
}
}, DELAY_TIME_MILI_SECONDS);
Antwoord 7, autoriteit 6%
Volgens de Java-documentatiedefinitie van Thread.sleep is:
Thread.sleep(t);
where t => time in millisecons to sleep
Als je 1 seconde wilt slapen, moet je:
Thread.sleep(1000);
Antwoord 8, autoriteit 6%
Een paar problemen, je vertraagt niet veel (.sleep
is milliseconden, geen seconden), en je probeert af te drukken in je catch
-statement. Uw code zou er meer als volgt uit moeten zien:
if (i==1) {
try {
System.out.println("Scanning...");
Thread.sleep(1000); // 1 second
} catch (InterruptedException ex) {
// handle error
}
}
Antwoord 9, autoriteit 6%
Gebruik Thread.sleep(2000); //2000 for 2 seconds
Antwoord 10
verplaats de System.out-instructie om uiteindelijk te blokkeren.
Antwoord 11
U moet de methode Thread.sleep()
gebruiken.
Dit wordt gebruikt om de uitvoering van de huidige thread gedurende een bepaalde tijd in millisecondente pauzeren. De argumentwaarde voor milliseconden kan niet negatief zijn, anders wordt IllegalArgumentExceptiongegenereerd.
Ter info (Samenvatting overgenomen van hier)
Java Thread Sleep belangrijke punten
- Het pauzeert altijd de huidige thread-uitvoering.
- Thread sleep verliest geen monitors of vergrendelingen die de huidige thread heeft
verworven. - Elke andere thread kan de huidige thread in de slaap onderbreken, in die zin
case InterruptedException wordt gegenereerd.
Antwoord 12
wacht enkele (zoals 10) seconden op uw compiler om deze statische klassenmethode te gebruiken
TimeUnit.SECONDS.sleep(10);
het is inclusief in
java.util.concurrent.TimeUnitlibery