Одновременное чтение значений Cell в нескольких потоках
Чтобы одновременно читать значения ячеек более чем в одном потоке, установитеРабочий лист.getCells().setMultiThreadReading() кистинныйЕсли вы этого не сделаете, вы можете получить неправильные значения ячеек. Обратите внимание, что некоторые функции, такие как форматирование значений ячеек, не поддерживаются для нескольких потоков. Таким образом, MultiThreadReading позволяет вам получать доступ только к исходным данным ячейки. В среде с несколькими потоками, если вы попытаетесь получить отформатированное значение ячейки, например, с помощью Cell.getStringValue() для числовых значений, вы можете получить неожиданный результат или исключение.
Следующий код:
- Создает рабочую книгу.
- Добавляет рабочий лист.
- Заполняет рабочий лист строковыми значениями.
- Затем он создает два потока, которые одновременно считывают значения из случайных ячеек. Если считанные значения верны, ничего не происходит. Если считанные значения неверны, отображается сообщение.
Если вы прокомментируете эту строку:
testWorkbook.getWorksheets().get(0).getCells().setMultiThreadReading(true);
то появится следующее сообщение:
if (s.equals("R" + row + "C" + col)!=true)
{
System.out.println("This message box will show up when cells read values are incorrect.");
}
В противном случае программа запускается без отображения каких-либо сообщений, что означает, что все значения, считанные из ячеек, верны.