Я создал программу, которая использует один поток для чтения данных из файла в связанный список, позволяет называть его LL1. Из этого я создал пул потоков, который распределяет каждый поток с задачей обработки, которая считывает данные из LL1 и выводит свои вычисления в новый связанный список. Из этого я должен выводить каждый новый связанный список потоков в файл SINGLE. Я пытаюсь вывести каждый связанный список в виде последовательных блоков, так что потоки не смешиваются данные, чтобы я использовал точку синхронизации следующим образом:Java-очередь потоков с пулом потоков
public synchronized void appendContents(List<Vector2> output1) {
try {
sFileName = outFilePath + "\\file" +fileCount+ ".cntr";
File oFile = new File(sFileName);
if (!oFile.exists()) {
oFile.createNewFile();
}
if (oFile.canWrite()) {
//BufferedWriter oWriter = new BufferedWriter(new FileWriter(sFileName, true));
FileWriter wstream = new FileWriter(oFile, true);
BufferedWriter outWriter = new BufferedWriter(wstream);
for(int i = 0; i < output1.size(); i++)
{
//replace the space marker values with a newline
if(output1.get(i).y == -200.0){
outWriter.newLine();
}else{
outWriter.write(String.valueOf(output1.get(i).x) + " " + String.valueOf(output1.get(i).y) + " " + String.valueOf(interval));
outWriter.newLine();
}
}
outWriter.close();
}
}
catch (IOException oException) {
throw new IllegalArgumentException("Error appending/File cannot be written: \n" + sFileName);
}
Проблема я столкнулся в том, что данные не выходит в порядке, который является то, что мне нужно есть
list1 value list1 value
list1 value _______________\ list2 value
list1 value ________________\ list1 value
list2 value RATHER THAN ____/ list3 value
list2 value ---------------/ list2 value
list2 value list1 value
list3 value list2 value
list3 value list1 value
list3 value list3 value
list3 value list3 value
Если кто-нибудь может дать мне шаг в правильном направлении, он будет высоко оценен. Спасибо,
Джек
Показать, как вы начинаете свои темы. Также уточните, какой результат вы получаете и чего ожидаете. –
Возможно, этот [пример] (http://arashmd.blogspot.com/2013/07/java-thread-example.html#fe) поможет –
. Каков ресурс, который вам нужен для синхронизации доступа? Похоже, что это «Список». Вероятно, вы должны заблокировать это, вместо использования неявной блокировки объекта, к которому принадлежит appendContents(). Как написано, в высококонкурентной среде ваш метод appendContents() может стать узким местом и ограничить масштабируемость. –
scottb