Hej! Hej, Det är lite svårt att förklara när man inte kan visa, men jag ska försöka. Jag ska skicka viss information till en "maskin" som man kan säga styrs av javapplikationen. Informationen jag ska skicka måste skickas med några sekunders mellanrum, det är därför jag har så många sleep-funktioner. På alla ställen där det står "System.out.println" skickar jag egentligen information. Hej,Thread.sleep();
Har lite problem med trådar och sleep()-funktionen och skulle behöva hjälp med det.
Här är min kod:
///////////////////////////////////////////////////////////
Thread closeThread = new Thread()
{
public void run()
{
try
{
System.out.println("hej");
Thread.sleep(1000);
System.out.println("hej");
Thread.sleep(1000);
System.out.println("hej");
Thread.sleep(4000);
System.out.println("hej");
Thread.sleep(2000);
System.out.println("hej");
Thread.sleep(2000);
System.out.println("hej");
}
catch (InterruptedException e)
{}
}
};
closeThread.start();
//////////////////////////////////////////////////////////////////////
Där jag har system.out.println gör jag egentligen nåt annat men det skulle bli för mycket kod att visa.
Mina frågor är:
1) Spelar det någon roll hur många sleep() funktioner man har i rad? Blir koden sämre på nåt sätt? Denna koden fungerar ibland för mig. Ibland flera gånger i rad och ibland verkar den göra allt på en gång efter att den har väntat väldigt många sekunder.
2) Jag ska ha en tråd till där jag vill ha en "frame" eller nåt som visar texten "wait". Lyckas inte med det särskilt bra. Framen visas inte alltid samtidigt som detta ovan görs.
3) Skulle koden bli bättre om jag hade en try-catch för varje sleep-funktion?
Tack på förhand
/AggeSv: Thread.sleep();
Jag tycker att koden ser lite underlig ut och förstår inte riktigt varför du måste ha en massa sleep() anrop. Kan du försöka förklara lite mer utförligt vad det är din applikation ska göra, du behöver inte skicka med någon mer kod om du inte vill...men lite mer om vad det egentligen är du vill göra.
/KlasSv: Thread.sleep();
/AggeSv: Thread.sleep();
>1) Spelar det någon roll hur många sleep() funktioner man har i rad? Blir koden >sämre på nåt sätt? Denna koden fungerar ibland för mig. Ibland flera gånger i rad >och ibland verkar den göra allt på en gång efter att den har väntat väldigt många >sekunder.
Det verkar som om du inte riktigt vet hur programmet beter sig. För att få reda på mer,
kan du ju verkligen skriva ut något på klientsidan före och efter varje anrop till
sleep() samt skriva ut något vid catch-klausulen(-erna).
>3) Skulle koden bli bättre om jag hade en try-catch för varje sleep-funktion?
Ja, du kan då fortsätta exekvera om tråden blir avbruten under sleep(). Annars
dör tråden om den blir avbruten och det kan ju vara redan i första anropet av
sleep()...
Hoppas det hjälper
Rikard