unterbrechungsbehandlung io

Status
Nicht offen für weitere Antworten.

pups

Mitglied
hallo, ich habe eine Frage zur Unterbrechungsbehandlung in Java, in meinem speziellem Fall auf einer Windows Kiste mit seriellem Unterbrechungssignal.

Es geht um folgende Software.: Sobald eine Information über den seriellen Eingang kommt soll diese unverzüglich abgearbeitet werden, dies ist mit einem EventListener realisiert.
Unabhängig aber gleichzeitig hierzu exestiert ein Thread der in Zeitintervallen eine längerweilige Operation durchführt um Daten zu laden, die dann dem EventListener dazu diehen die Anfrage richtig abzuarbeiten. Hierbei wird ein neues Datenobjekt erzeugt und erst ganz am Schluss der Ladeoperation wenn das Datenobjekt fertig ist, wird es auf das Datenobjekt der aktiven EventListener Behandlung umgezeigert. Somit sind die 2 Threads bis auf die Umzeigeroperation (die ja fast 0 Zeit braucht unabhängig voneinander).

Nun habe ich aber folgende Frage.:

Wenn ein serielles Signal ankommt, wird ja dieses ohne Verzögerung über die Steuerleitung des Buses an die Cpu gemeldet, diese löst dann eine Unterbrechungsbehandlung aus, und bearbeitet diese zuerst. In Fall von Java, wird dann diese Unterbrechungsgehandlung direkt auf den EventListener gemappt? Oder muss ich weitere Vorkehrungen treffen sodass ich sicher Stellen kann dass dieses signal sofort abgearbeitet wird?

Lässt sich vllt mit Prioritäten der Threads irgendetwas machen? Gibts sowas in Java.

Bis jetzt läuft die Software gut, jedoch habe ich ein schlechtes gewissen, dass ein Fall eintrefen könnte in dem die Software nicht schnell genug reagiert.

Bin dankbar um jede Aufklärung.

Danke
 

Empire Phoenix

Top Contributor
nicht schnell genug reagiert. -> Windows^^ (und alle anderen Betriebssysteme, wenns schnell sein muss schlägt nichts eine deterministische Lösung)

Naja egal, auf jede fall ist es möglich Thread Prioritäten zu geben, ob's was hilft kann ich aber nciht sagen
 
Zuletzt bearbeitet:

pups

Mitglied
hm ja falsches betriebssystem und falsche sprache gewählt aber damit muss ich jetzt leben.

Aber nochmal zu dem seriellem Signal, wenn das kommt wird doch sofort den EventListener ausgelöst?Also jedenfalls mal angefangen den zu bearbeiten... Oder wird der JVM nur gesagt, hey hier ist n Signal für dich, aber mach du mal dein eigenes Thread Scheduling?

Weil dann könnte cih versuchen gleich am Anfang der Behandlung den nicht so wichtigen Thread zu vernichten und ihn danach neu zu starten oder ähnliches...
 
G

Gelöschtes Mitglied 5909

Gast
Mach in deinem Thread folgendes

[highlight=java]
Thread.currentThread().setPriority(Thread.MAX_PRIORITY)
[/highlight]

Ansonsten würde ich mir erstmal keine Gedanken machen wenn alles gut läuft oder ggf. Performance / UnitTests schreiben.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben