| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > массив из потоков |
| Автор: sergioK 1.11.2009, 02:00 | ||
cоздаю потоки в цикле
где StockData - extends Thread как мне померить время работы самого цикла ? т,е другими дождаться когда все потоки будут завершены , но нельзя пользовать join т,к следующий поток не должен ждать пока предыдущий завершиться , |
| Автор: goodday1941 1.11.2009, 02:21 |
| ну повесить измерения длительности на выполнения самого треда StockData, ну и далее самый длинный и будет нужным Вам временем |
| Автор: sergioK 1.11.2009, 11:57 | ||
решил при помощи статик переменных, теперь вопрос в другом, программа должна запускать до 10000 средов, это максимально , реально от 50 до 100, компьютер не грохнеться ? если писать на С это так-то решит проблему ? |
| Автор: goodday1941 1.11.2009, 13:03 |
| че ему грохаться то ) главно что бы ресурсов хватило а вообще к чему такое колличество тредов? может лучше ограничить к примеру сотней, а остальных в очередь слать? |
| Автор: sergioK 1.11.2009, 13:48 | ||
вот я и спрашиваю ресурсов хватит ? кол-во средов - требование задачи , юзер на экране выбирает симбол по нему строиться URL из которого беруться данные, потом он может выбрать еще один символ- стоиться новый URL , и так он может выбрать до 10000 симболов , теорититески, больше 50 он физически не сможет просмотреть глазами, если я открою скажем 10 нитей ,то будут приходить лишние данные и это замедлит выдачу нужных, а условием задачи является показ данных в реальном времени , т,е задержка в 0,5 секунды критична , при это сами данные все время меняються , у меня PC а не 12процесорный MF за 700кило баксов какие варианты ? |
| Автор: Skynin 1.11.2009, 14:10 | ||||||
Ни одна задача задача не требует количества тредов. Потоки - это способ реализации задачи, а не - требование. Как говорил А. Кокс - "Многопоточное программирование предназначено для тех кто не умеет программировать конечные автоматы" 10000 для озвученной задачи - явно неверный путь проектирования, тем более что уже указано: "теоретически, больше 50 он физически" и "задержка в 0,5 секунды критична". За какое время работы программы может появится 10000 потоков? И сколько в действительности будет потоков одновременно? Какое время на переключение между потоками будет расходоваться при 10 тысячах потоков? Пример: To summarize, all the servlet containers did well up to about 4000 connections - http://www.javalobby.org/java/forums/t92965.html Обращение к большому числу внешних соединений лучше делать с помощью неблокирующих функций java.nio. http://mina.apache.org/
Перепроектировать, если действительно одновременно будут работать 10 тыс потоков. Оставить как есть, если пользователь не в состоянии в секунду набирать 10 тыс символов. P.S.
Сколько одновременных соединений эффективно поддерживает конкретная ОСь? Утрировано - толку от 10 тыс потоков, если это Windows XP c непропатченным TCP.SYS где зашито 10 half-коннектов. 9990 потоков все равно будут стоять и ждать когда ОСь даст возможность JVM открыть новое TCP соединение. Ресурсов то наверное хватит, а вот как оно будет работать... могут и секунды уходить на ожидание результатов работы конкретного потока. |
| Автор: sergioK 1.11.2009, 16:27 | ||
Как его подключать ? скачал , добавил жары в Эклипсе , он их не видит, на сайте они говорят Verify the integrity of the files не помимаю что с этим делать ? |
| Автор: ivanovpv 2.11.2009, 10:34 |
Есть такая штука называется ThreadGroup - группа/массив потоков, в классе есть средства группового управления. |