hallo leute,
ich bin neu bei euch im forum und muss sofort ein kleines problem äußern:
ich habe einen sortieralgorithmus als thread implementiert...nun möchte ich den algo für unbestimmte zeit pausieren...bis der user das verfahren fortführen möchte.
aber irgendwie funktioniert die interrupt() methode nicht, oder ich weiss nicht warum...also habe ich mein algo mit einen booleanwert gestoppt...das gefällt mir aber nicht wirklich...schließlich startet der algo jetzt komplett neu, wenn der user es erwünscht aber er soll an der gestoppten stelle weiter machen...! hat jemand ne alternative vorzuschlagen hier mein code:
ich bin neu bei euch im forum und muss sofort ein kleines problem äußern:
ich habe einen sortieralgorithmus als thread implementiert...nun möchte ich den algo für unbestimmte zeit pausieren...bis der user das verfahren fortführen möchte.
aber irgendwie funktioniert die interrupt() methode nicht, oder ich weiss nicht warum...also habe ich mein algo mit einen booleanwert gestoppt...das gefällt mir aber nicht wirklich...schließlich startet der algo jetzt komplett neu, wenn der user es erwünscht aber er soll an der gestoppten stelle weiter machen...! hat jemand ne alternative vorzuschlagen hier mein code:
Code:
public class BubbleSort extends Thread {
private DrawPanel dp;
private Dialog ms;
private int delay;
private boolean Stop = false;
public BubbleSort(DrawPanel drawPanel, Dialog dialog){
this.dp = drawPanel;
this.ms = dialog;
}
public void run() {
bubbleSort(dp.getSaat());
}
public void anhalten(){
Stop = true;
}
public void bubbleSort(int[] array) {
int arrayLänge = array.length - 1;
if(Stop == false){
for (int j = arrayLänge; j > 0; j--){
for (int i = 0; i < j; i++){
if (array[i] > array[i+1]) {
// vertausche elemente
int tausch = array[i];
array[i] = array[i + 1];
array[i + 1] = tausch;
}
if(Stop == true) break;
dp.repaint();
delay = ms.getDelay();
try { sleep(delay); } catch (InterruptedException e) { }
}
}
}
}
}