Я пишу код, используя Java-фреймворк Executor, и я тестирую свой код на Eclipse, но я увидел странную вещь. Используя режим отладки в Eclipse, я могу печатать на консоли вывод, или, лучше, когда я использую шаг режима отладки в (F5), я могу печатать вывод в консоли, но если я использую режим отладки, используя шаг возврата (F7) или я запускаюприложение, оно ничего не печатает на консоли.
Ниже моего вывода перед с шагом режима отладки в (F5):
mapBuffer
[[B@1af2d44a, [B@18d87d80, [B@618425b5, [B@58695725, [B@543588e6, [B@f5acb9d, [B@4fb3ee4e]
и после с режимом отладки с возвратом шага (F7) или запустите приложение:
mapBuffer
[]
С одним и тем же кодом у меня два разных вывода.
public boolean readPieceCount() throws IOException {
//byte[] buffer = null;
SortedMap<Integer,byte[]> mapBuffer=new TreeMap<>();
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(() -> {
for (Integer i=0; i<NUMFILES;i++)
{
Path path = Paths.get(pathPieceCount+"pieceCount"+(i+1)+".csv");
if(Files.exists(path, LinkOption.NOFOLLOW_LINKS))
{
byte[] buffer = null;
try {
buffer = Files.readAllBytes(path);
mapBuffer.put(i+1, buffer);
} catch (IOException e) {
System.out.println("Exception on readPieceCount!!!");
}
}
}
});
System.out.println("mapBuffer ");
System.out.println(mapBuffer.values());
executor.shutdown();
/*
more code
*/
это часть моего кода, где у меня проблема.
Я быхотелось бы иметь одинаковый результат во всех режимах. Честно говоря, я провел много времени вчера, но я не понимаю, где ошибаться. Только подтверждение. Когда я запускаю эту часть кода, я всегда получаю одну и ту же последовательность буфера на карте, или исполнитель может изменить последовательность?