2015-04-29 2 views
-2

Я хочу создать поток, который будет сортировать массив с помощью метода BubbleSort, но у меня есть некоторые проблемы.BubbleSort thread не работает

Это мой BubbleSort класс:

package thread; 
import java.util.Arrays; 

public class BubbleSort implements Runnable { 

private int[] array; 
private long start, end; 

public BubbleSort(int[] array){ 
    this.array=array; 
} 

public void sort(){ 
    int j; 
    boolean flag = true; 
    int temp; 

    while (flag) { 
     flag= false; 
     for(j=0;j<array.length-1;j++){ 
      if (array[j]>array[j+1]){ 
       temp = array[ j ];    
       array[j] = array[ j+1 ]; 
       array[j+1] = temp; 
       flag=true;    
      } 
     } 
    } 
} 

@Override 
public void run() { 
    start = System.currentTimeMillis(); 
    this.sort(); 
    end = System.currentTimeMillis(); 
    System.out.println(end-start); 
} 

public long getTime(){ 
    return end - start; 
} 

@Override 
public String toString(){ 
    return Arrays.toString(array); 
} 

}

и главный класс:

package multisort; 

import thread.BubbleSort; 

    public class MultiSort { 

    public static void main(String[] args) { 
     int[] x = {12,34,53,1,23,532,102,31,12,0,344,123,5422,12341,22,3410,123,342,233,12342,234432,12334}; 
     BubbleSort bs = new BubbleSort(x); 
     Thread bsThread = new Thread(bs); 
     bsThread.start(); 
     System.out.println(bs+"\n"+bs.getTime()); 
     /* 
     bs.sort(); 
     System.out.println(bs); it works 
     */ 
    } 

} 

Проблема заключается в том, что массив не будет отсортирован, если я называю мой метод сортировки в методе запуска. Кто может помочь мне с ответом?

+0

Какую отладку вы пробовали? – ceejayoz

+0

«Проблема в том, что это не работает» не помогает. Вы должны быть более конкретными в отношении того, что * точно * вы ожидаете и что * точно * получаете, а затем задаете конкретный вопрос о том, что именно вы не понимаете. –

ответ

1

Вы не дождитесь окончания сортировки нити. Вы просто топаете по массиву независимо от того, что делает другой поток!

Это как рассказывать вашей дочери, что она может использовать автомобиль, а затем открывать капот и вынимать кусочки двигателя.