"Countdown" Implementierung

Reggie

Aktives Mitglied
Tach zusammen,

Ich habe eine Frage zur Implementierung eines Countdown's wenn das die richtige Bezeichung ist.
Es geht darum das ich eine Applikation habe die Daten verarbeitet und anschliessend diese per SFTP hochlädt. Das funktioniert auch sehr gut bis anhin, nur habe ich ab und an das Problem das viele Dateien in der Warteschlange für den Upload stehen, diese werden im Bruchteil einer Sekunde hochgeladen und zwar wird für jedes File eine Session eröffnet. Zwar hintereinander aber dennoch blockiert mich der Server weil wahrscheinlich zu viele Sessions in zu kurzer Zeit geöffnet und wieder geschlossen werden.

Um das Problem zu lösen möchte ich bei dem ersten Upload einen Countdown/Timer starten der 30 sek dauert, während dieser Zeit bleibt die Session offen. Wenn in diesen 30 sek erneut ein Upload stattfindet wird der Timer zurückgesetzt. Wenn der Timer ausläuft wird die Session geschlossen.

Wie kann ich das am besten umsetzen? Ich habe an einen Thread gedacht der den Countdown macht, allerdings Weiss ich noch nicht wie ich den Countdown/Timer zurück setzen kann. Auch die Thread Interaktion zwischen den Thread's macht mir etwas sorgen. Reicht es die Session einfach volatile zu machen damit ich diese von einem anderen Thread aus schliessen kann?

Wäre froh wenn mir das jemand ein paar Hinweise geben kann....

Gruss Reggie
 

Kjubert

Aktives Mitglied
Also der Countdown im eigenen Thread ist generell schon der richtige Ansatz, denke dich. Aber mir ist beim Lesen aufgefallen, dass deine Idee von der gewöhnlichen Vorgehensweise solcher Programme abweicht: Ich habe den Eindruck, dass die eher einfach immer nur eine bestimmte Anzahl von Session gleichzeitig zulassen. Natürlich will ich nicht sagen, dass das die beste Lösung sein muss, aber vielleicht hat das ja nen Grund, dass das überall so gemacht wird (meiner Erfahrung nach). Und eventuell ist es ja sogar einfacher umzusetzen?

Nur so ein Gedanke... viel Erfolg!
 

freez

Top Contributor
Ich habe auch das Gefühl, dass hier ein Designfehler vorliegt. In der Regel schickt man doch die Files nacheinander innerhalb einer Session hoch. Vielleicht hilft etwas Code zum besseren Verständnis, wie du es umgesetzt hast.
 

Reggie

Aktives Mitglied
Code wird Wahrscheinlich nicht viel bringen, ich versuch es nochmal mit etwas mehr Daten. Wenn das nicht hilft post ich noch etwas Code.

Das Programm ist eine Schnittstelle zu einem Transportunternehmen und Lagermitarbeiter schicken Daten via MDE.

Das Programm ist nicht wirklich OO, die Daten die ankommen werden durch verschiedene statische Klassenmethoden durchgereicht. Immer nur 1 Datensatz auf einmal, das reicht für die Verarbeitung völlig aus. Grundsätzlich würde ich gerne 1 Session haben und die Dateien hochladen, das ist auch der Grund warum ich auf die Idee mit dem Timer gekommen bin, da die Daten über den ganzen Tag verteilt ankommen und ich nicht die Session den ganzen Tag offen halten will/kann. Darum die Idee mit den 30 sek Verzögerung, so können Daten die Zeitnahe aufkommen in einer Session verarbeitet werden und nach einiger Zeit schliesst sich trotzdem die Session.

Den Timer im selben Thread laufen zu lassen ist leider nicht möglich da ich Ihn nicht blockieren kann, die neuen Daten müssen ja verarbeitet werden können.

Es stellen sich also folgende Fragen,
Wie kann ich das abmelden der Session um eine bestimmte Zeit verzögern ohne den Verarbeitungsthread zu blockieren?
Wie kann ich dafür sorgen das Daten die während des Timeouts eingehen den Timer wieder reseten?
Wenn der Timer in einem anderen Thread abläuft, wovon ich ausgehe. Wie kann der Thread die Session, die von einem anderen Thread gestartet wurde, schliessen?

Jemand eine Idee?
 

d3rbastl3r

Bekanntes Mitglied
Wird eine Session erzeugt so generierst du einen CountDown-Thread welcher erstmals mit Thread.sleep(30000) blockiert. Wacht der CountDown-Thread auf so prüfst du ob die Session noch uploads durchführt. Wenn ja, dann blokierst du den CountDown-Thread wieder mit Thread.sleep(30000). Wenn nein, dann wird von dem CountDown-Thread die Session und der CountDown-Thread geschlossen.
 

Reggie

Aktives Mitglied
Danke für die Antwort.
Ist allerdings nicht ganz das was ich erreichen will. jeder Upload soll ein 30 sek Fenster nach sich ziehen wo die Session noch offen ist. Wenn bei deiner Version der letzte Upload bei Sekunde 29 gemacht wird, wird nach 1 Sekunde die Session geschlossen.

Es ist nicht so das den ganzen Tag am Laufmeter Dateien hochgeladen werden. Im Normalfall wird alle 10 Minuten ein Upload gemacht, leider gibt es aber Spitzen die dann dazu führen das 15 Minuten lang nicht mehr hochgeladen werden kann.

Eine Holzfällerlösung würde ich schon irgendwie hinbringen, mir ist aber wichtig zu wissen wie man so etwas sauber löst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
missy72 Methoden Calendar/Date Countdown Allgemeine Java-Themen 9
J Countdown für Datum und Uhrzeit Allgemeine Java-Themen 4
snipesss Visueller Countdown in JFrame Allgemeine Java-Themen 1
Tacofan JAVA Countdown Allgemeine Java-Themen 10
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
A Methoden Countdown Allgemeine Java-Themen 10
M Countdown mit Besonderheiten Allgemeine Java-Themen 9
T Countdown -> Sekunden anzeigen Allgemeine Java-Themen 4
J Countdown probleme Allgemeine Java-Themen 5
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1
L rotateLeft implementierung Allgemeine Java-Themen 2
R In der Ausgabe sollte anstelle des obersten Sterns ein "+" stehen nur scheitere ich bei der Implementierung Allgemeine Java-Themen 9
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Mutable objects und Implementierung von ChangeEvents Allgemeine Java-Themen 5
W Queue Implementierung Allgemeine Java-Themen 6
C Ein Iterator ist eine Implementierung des Interface Iterable? Allgemeine Java-Themen 2
F Implementierung von Teilprogrammen [Java|Python] Allgemeine Java-Themen 7
I TimSort - Sortieralgorithmus - Erklärung und Pseudocode - Implementierung Allgemeine Java-Themen 2
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
ruutaiokwu burstsort-implementierung in java? Allgemeine Java-Themen 2
D Implementierung einer Mehrsprachigkeit, wichtig ? Allgemeine Java-Themen 5
D Implementierung einer Rechteverwaltung Allgemeine Java-Themen 2
A Implementierung eines Algorithmus (Farthest Insertion zur Lösung des TSP) in O(n²) Allgemeine Java-Themen 2
K A*-Implementierung flexibler machen Allgemeine Java-Themen 4
J Java-Implementierung diverser Beziehungen zwischen Klassen bzw. Objekten Allgemeine Java-Themen 2
S BlueJ Cäsar-Implementierung Allgemeine Java-Themen 6
S Implementierung Programmneustart Allgemeine Java-Themen 10
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
G Implementierung einer Kommunikation Allgemeine Java-Themen 7
S Implementierung einer PluginArchitektur Allgemeine Java-Themen 5
A OOP: Überschreiben/Implementierung von Methoden Allgemeine Java-Themen 5
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
J Best Practice für implementierung von equals(...) Allgemeine Java-Themen 7
Kr0e Eigene RMI Implementierung Allgemeine Java-Themen 3
V Wie finde ich die konkrete Implementierung? Allgemeine Java-Themen 8
G Implementierung vom AKS-Test Allgemeine Java-Themen 11
R software implementierung Allgemeine Java-Themen 3
N Observer/Observable der JAVA-API od. eigene Implementierung Allgemeine Java-Themen 2
K Design / Implementierung Allgemeine Java-Themen 5
B jre browser implementierung ? Allgemeine Java-Themen 4
B Elegantere Lösung bei der Implementierung eines Interfaces Allgemeine Java-Themen 2
G Klasse Queue Implementierung in Java Allgemeine Java-Themen 4
G Eigene PrintService Implementierung. Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben