Ga naar inhoud

[JAVA] sleep/pauze


anoniem

Aanbevolen berichten

Geplaatst:
Hey hallo, vraagje ik ben bezig met een programma waarin wat klantgegevens en etc instaan. Ik heb het zo gedaan dat bij het starten van het programma alle klanten uit de DB worden gelezen en in objecten worden opgeslagen. Nu zijn er een aantal booleans binnen deze objecten die staan voor een bewerking: nieuw, aanpassen en verwijderen. Als het programma wordt gesloten worden de klantobjecten doorgenomen op zoek naar een evt actie die uitgevoerd moet worden (insert, update,delete). Deze acties worden vervolgens uitgevoerd, er is alleen 1 maar: de volgende regel in het programma is System.exit(0) en ik ben er helaas achter gekomen dat deze regels zo snel worden uitgevoerd dat het systeem al gesloten is voordat de database de query heeft verwerkt. Gevolg is dat de bewerking of de laatste bewerking in een reeks niet wordt uitgevoerd. Het programma moet dus eigenlijk een bepaalde tijd slapen totdat de verwerkingen zijn uitgevoerd. Aangezien dit alles niet in een thread staat (ook niet nodig) kan ik dus het programma niet laten pauzeren voor een x aantal milliseconden. Nu zijn er wel een aantal oplossingen welke over het algemeen niet echt net zijn, plus ik weet niet hoveel bewerkingen er overgeslagen worden bij het afsluiten. Wat ik dus eigenlijk moet weten is hoelang doet Access erover om een query uit te voeren en hoe kan ik deze tijd opvragen en dit verwerken in een soort sleep commando? Misschien zijn hier standaarden voor want het lijkt me sterk dat ik de eerste ben die hier tegenaan loopt, ik heb alleen niets kunnen vinden hierover op het web. bvd
Geplaatst:
Dit is natuurlijk wel de meest ranzige oplossing... Wat je moet doen is controleren of de queries uitgevoerd zijn en pas dan afsluiten, niet gewoon maar een willekeurige tijd slapen zodat je van het probleem af bent. Wat gebeurd er bijvoorbeeld als je het aantal queries verdubbeld? Ga je dan proefondervindelijk vast stellen hoe lang je dan moet slapen? Wat doe je met langzame pc's die meer tijd nodig hebben? Etc etc. Een slechte oplossing dus.
Geplaatst:
Ja Bill daar heb je gelijk in. Maar het probleem zit hem in feit dat als ik een query (update, insert, delete) uitvoer krijg ik als resultaat number of rows affected als int terug. Dit getal is correct dus voor mijn programma is de query "afgehandeld": queries uitgevoerd, goede resultaat terug. Maar dan kan er alsnog niet gesloten worden, zie je dan een ander alternatief? Ik weet niet hoe ik op moet vragen of mijn queries daadwerkelijk zijn verwerkt... Ja mss door de laatste query te pakken en kijken of de data hiervan idd verwerkt is. dit kan recursief worden opgelost. Maar ik vraag me af of er geen andere mogelijkheden zijn. @haxor: wat bedoel je met asynchrone verwerking van gegevens? en is dit goed/slecht. Het is voor mij een nieuwe term...
Geplaatst:
[quote:69e7a3b885="B00TjE"]Never mind ben er net tegenaan gelopen Thread.sleep(...); D8 dat dat alleen in een thread kon. [/quote:69e7a3b885] Je zit ook in een thread. Een process bevat minimaal één thread, en dat is die waarin jou single threaded programma draait. Waarom doe je de uiteindelijke verwerking eigenlijk pas aan het eind en niet direct? Op een netwerk betekent dit dus dat andere gebruikers tegen niet geupdate data aan zitten te kijken.
Geplaatst:
[quote:c5c7b97b7d="B00TjE"]Ja Bill daar heb je gelijk in. Maar het probleem zit hem in feit dat als ik een query (update, insert, delete) uitvoer krijg ik als resultaat number of rows affected als int terug. Dit getal is correct dus voor mijn programma is de query "afgehandeld": queries uitgevoerd, goede resultaat terug. Maar dan kan er alsnog niet gesloten worden, zie je dan een ander alternatief?[/quote:c5c7b97b7d]Dat is vreemd, je database geeft aan dat de rijen aangepast zijn, hoe kan het dan dat je database nog niet ge-update is? Waarschijnlijk ligt het toch ergens anders aan...
Geplaatst:
@Laurens: het zal nooit een netwerkapplicatie worden plus ik vond het eens leuk om zo de verwerking te doen, weer eens wat anders. @Bill, ja ik ben even verbaasd als jij bent want het klopt precies wat mijn statment returned als er een query is uitgevoerd. Het gekke is ook dat als er een pauze in zit dat alles dan ook correct wordt uitgevoerd. Ik zou niet weten waar het anders aan zou kunnen liggen...

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...