Hallo zusammen,
ich habe meine Anwendung von Windows auf MAC-OS probiert und stehe vor einem seltsamen Phänomen. Ich lese eine DB aus und generiere daraus Abfragen and div. Controller per Socket. Das ganze läuft in einem getrennten Thread. D.h. die Abfragen sammeln sich in einer Queue und werden in //do something bearbeitet. Im nachten Durchlauf der while wir jeweils der erste Eintrag entfernt.
So, jetzt der spannende Teil: das funktioniert nur bedingt, da ich wenn der MAC ne weile läuft und ich ihn komplett in Ruhe lasse (Ruhezustand ist aber deaktiviert) eine "no such element exception" geworfen bekommen. Aber: ich frage im Catch-Block die Länge der Warteschlange ab... und sie ist nie 0. Heute Morgen wurde mir 6170 ausgegeben. Zudem ist das remove ja auch nur dann relevant, wenn die Länge >0 ist. Das Verhalten zeigt sich unter Windows nicht. Der Inhalt der Queue wird zudem nach jedem Durchlauf in eine Textarea eingetragen, um die Bearbeitung zu visualisieren... diese ist leer.
Jetzt ist es natürlich schwierig, ohne die ganze App zu kennen hier Vermutungen anzustellen, aber ggf. fällt dem Ein oder Anderen ja doch etwas dazu ein....
VG
Steffen
ich habe meine Anwendung von Windows auf MAC-OS probiert und stehe vor einem seltsamen Phänomen. Ich lese eine DB aus und generiere daraus Abfragen and div. Controller per Socket. Das ganze läuft in einem getrennten Thread. D.h. die Abfragen sammeln sich in einer Queue und werden in //do something bearbeitet. Im nachten Durchlauf der while wir jeweils der erste Eintrag entfernt.
Java:
private static void sendSocketToClient() {
Runnable runnable = new Runnable() {
@Override
public void run() {
try {.
while (cmdQueue.size()>0) {
try {
cmd = cmdQueue.remove();
}catch (Exception e) {
System.out.println("CmdQueueHandler-> sendSocketToClient -> cmdQueue.remove() : "+e);
System.out.println("size: "+cmdQueue.size());
}
//do something
}//while
}catch (Exception e) {
System.out.println("CmdQueueHandler-> sendSocketToClient -> : "+e);
}
...usw.
So, jetzt der spannende Teil: das funktioniert nur bedingt, da ich wenn der MAC ne weile läuft und ich ihn komplett in Ruhe lasse (Ruhezustand ist aber deaktiviert) eine "no such element exception" geworfen bekommen. Aber: ich frage im Catch-Block die Länge der Warteschlange ab... und sie ist nie 0. Heute Morgen wurde mir 6170 ausgegeben. Zudem ist das remove ja auch nur dann relevant, wenn die Länge >0 ist. Das Verhalten zeigt sich unter Windows nicht. Der Inhalt der Queue wird zudem nach jedem Durchlauf in eine Textarea eingetragen, um die Bearbeitung zu visualisieren... diese ist leer.
Jetzt ist es natürlich schwierig, ohne die ganze App zu kennen hier Vermutungen anzustellen, aber ggf. fällt dem Ein oder Anderen ja doch etwas dazu ein....
VG
Steffen