Hoe u JAVA-vertraging voor een paar seconden kunt maken?

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 (.sleepis 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

Other episodes