Многопоточный шаг в весенней партии - PullRequest
0 голосов
/ 24 апреля 2020

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

  • Мой вопрос связан с ридером. Например, предположим, что существует файл с 1000 записями, размер чанка равен 100, количество потоков равно 4. Так что в этом случае будет 10 чанков и каждому потоку будет предоставлен чанк для запуска, и когда его законченные оставшиеся чанки будут назначены потокам, и в один момент времени только 4 чанка будут обрабатываться 4 потоками. Но как потоки решили, какие данные читать? Допустим, если первый поток уже работает с 100 записями, почему второй поток знает, что он не должен выбирать те же записи и искать записи, которые не были получены другими потоками.

  • В этом случае будет один экземпляр Reader и Writer, который будет разделен между потоками? Если да, то любой ресурс уровня класса не является потокобезопасным?

Спасибо,

1 Ответ

0 голосов
/ 26 апреля 2020

Но как потоки решили, какие данные читать?

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

В этом случае будет один экземпляр Reader и Writer, который будет использоваться совместно потоки? Если да, то любой ресурс уровня класса не является потокобезопасным?

Да, они будут разделены между потоками. Javado c каждого читателя / писателя упоминает, является ли читатель / писатель потокобезопасным или нет.

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

...