При работе выскакивает регулярно NullPointerException.
Вот код:
...
public class FindWordsUsingThreads {
public static char[] letters = {'c', 'e', 'n', 'r', 'c', 'u', 't', 'm'}; //изначальный набор симоволов
public static int l = letters.length - 1; //количество символов
public static String finalText; //конечный результат
public static char[][] results = new char[l + 1][l]; // массив строк с результатами
public static boolean[][] flags = new boolean[l + 1][]; //флаги, учитывающие использование букв. true - можно использовать. false - уже использована
public static int[] position; // номер буквы, которая подбирается в данный момент
...
public static synchronized void work(int number, FileWriter writer){
// устанавливаем начальную позицию
position[number] = 0;
// удаляем из массива букву, которая стоит первой и которую не используем в алгоритме
char[] currentLetters = new char[l];
for (int i = 0; i < l; i++) {
if (i < number) currentLetters[i] = letters[i];
if (i > number) currentLetters[i] = letters[i + 1];
}
//устанавливаем стартовые флаги true
for (int i = 0; i < l; i++) flags[number][i] = true;
//поехали по алгоритму
for (int i = 0; i < l; i++) {
results[number][position[number]] = currentLetters[i];
flags[number][i] = false;
position[number]++;
getNextLetter(position[number], number, currentLetters);
position[number]--;
flags[number][i] = true;
try{
writer.write(finalText);
} catch (IOException ex){
}
}
}
...
class NewThread implements Runnable{
String name;
Thread t;
int number;
FileWriter writer;
public NewThread(String threadname, int threadnumber, FileWriter threadwriter){
name = threadname;
number = threadnumber;
writer = threadwriter;
t = new Thread(this, name);
System.out.println(name + " стартовал.");
t.start();
}
//входная точка потока
public void run(){
FindWordsUsingThreads.work(number, writer);
System.out.println(this.name + " закончил.");
}
}
Так вот, почему выскакивает nullpointer? Ошибку выдает на строке
for (int i = 0; i < l; i++) flags[number][i] = true;
метода work.
массив flags инициализирован явно в мэйне.
может быть это связано с тем, что flags занят другим потоком?
если так, то как исправить?