Re[5]: Тестовое задание ...
От: GreenTea  
Дата: 15.06.15 19:52
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Здравствуйте, GreenTea, Вы писали:


GT>>Согласен.. Поправил.

GT>>
GT>>   public void addTask(int clientId, Runnable task) {
GT>>      synchronized (tasks) {
GT>>         int nextIndex = findBestIndexToInsert(clientId);
GT>>         tasks.add(nextIndex, new ClientTask(clientId, task));

GT>>         if (!executingClients.contains(clientId)) {
GT>>            tasks.notify();
GT>>         }
GT>>      }
GT>>   }

GT>>   private int findBestIndexToInsert(int clientId) {
GT>>      int minIndex = 0;

GT>>      for (int i = 0; i < tasks.size(); ++i) {
GT>>         ClientTask task = tasks.get(i);
GT>>         if (task.clientId == clientId) {
GT>>            minIndex = i + 1;
GT>>         }
GT>>      }
GT>>



EP>Сложность N вызовов addTask квадратичная — O(N*N).


Ну и что? Даже при миллионе тасок этот цикл будет выполняться за миллисекунды. А ситуация что там будет миллион тасок врят-ли реальна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.