Hoi,
ik ben een beginnende Java programmeur. Ik heb een class die in
een aparte thread taken uitvoert die door andere threads in een BlockingQueue (Java 5.0) gezet worden.
De code ziet er globaal als volgt uit:
Op de een of andere manier blijft de thread altijd draaien, ondanks het feit dat ik interrupt()
aanroep. Wie kan mij vertellen wat ik fout doe? De bedoeling is dat er een cleanUp() gedaan wordt
als de gebruiker het programma beeindigt, of als er iets anders fout gaat.
ik ben een beginnende Java programmeur. Ik heb een class die in
een aparte thread taken uitvoert die door andere threads in een BlockingQueue (Java 5.0) gezet worden.
De code ziet er globaal als volgt uit:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| class Executor{ BlockingQueue<Task> queue; public void run(){ Task task; try{ while( !Thread.interrupted() ){ task = queue.take(); execute( task ); } System.out.println( "exited while loop"); } catch( InterruptedException e ){ System.out.println( "interrupted." ); return; } finally{ // try to execute all tasks that are still in queue System.out.println( "finally..."); cleanUp(); } } void execute(){ // ... } } |
Op de een of andere manier blijft de thread altijd draaien, ondanks het feit dat ik interrupt()
aanroep. Wie kan mij vertellen wat ik fout doe? De bedoeling is dat er een cleanUp() gedaan wordt
als de gebruiker het programma beeindigt, of als er iets anders fout gaat.