Коллекции загружаются
прогресс в задаче насколько возможно без блокировки -> возврат в цикл. Следующая задача из очереди - снова прогресс насколько возможно -> возврат в цикл и тд.
С каждой блокирующей операцией связан некоторый момент в будущем, когда данная операция перестанет быть блокирующей. Для каждой блокирующей операции должно быть что-то, что даст нам понять, что операция больше не является блокирующей и что задание, связанное с этой операцией, можно смело снова класть в очередь заданий, тк когда до него дойдет очередь, оно совершенно точно будет способно продвинуться дальше в своем логическом развитии. Для операций I/O это 'что-то' - selectors.select(). Для операции 'получение item'а из очереди' - операция 'положить item в очередь'. Для операций, выполняющихся в другом потоке/процессе, - callback, который будет вызван, когда операция завершится. 9 апреля 2016
|