![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| initmax |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Доброго, возникла задача вызывать методы класса, через определённые промежутки времени
после запуска программы в нетбинсе, в начале пауза, за тем сходу вывод 30 итераций... 1) Как добиться чтобы вызов метода был каждую секунду 2) После выполнения проги в нетбинсе нет вывода "Build complete" но по прежнему весит running, как побороть это? Это сообщение отредактировал(а) initmax - 22.12.2009, 11:44 |
|||
|
||||
| LSD |
|
||||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Почитать документацию и выяснить, чем различаются методы
и
Надо или остановить таймер:
или при создании таймера указать, чтобы использовался поток демон. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||||
|
|||||||||
| initmax |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Странные глюки с таймером..
Тело метод таймера
DetailStreem.getNewDetail(); - уменьшает чисало на 1 при каждом новом вызове затем стартую таймер и жду пока число не будет = 0, после чего отключаю выполенение таймера
всё работает, НО если я коменчу строку
из цикла вывалиться не получается число уменьшается до бесконечности... в чём странный глюк? |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Для начала, добавь Thread.sleep(1) внутрь while. Если не поможет выкладывай полный код.
P.S. И остановись уже на каком нибудь одном таймере, а то скачешь с одного на другой. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| initmax |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
На сколько мне известно, это приостановка выполнения всей программы, мне же нужны независимые временные занятости оборудования. Или я что-то упустил? |
|||
|
||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Чо? Что такое независимые временные занятости оборудования?
Действительно вызывает очень кратковременную приостановку программы. Просто без этого у тебя цикл while будет молотить в пустую и сожрет все процессорное время. Возможно именно поэтому и не срабатывает другой поток, ему просто не хватает процессорного времени. Если так боишься Thread.sleep() замени его на
эффект будет схожим. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||||
|
|||||||
| initmax |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Благодарю за ответ, в теле цикла ставил как Thread.yield(); так и Thread.sleep(1)
На работу программы это ни как не отразилось. Пока задумался несколько над другим, как реализован констуктор копирования в Java, ибо ситуация следующая: Если в векторе есть детали, и станок не занят, запускаю станок и передаю ему ОБЪЕКТ деталь на обработку
Метод обработки выглядит следующим образом
Т.Е. обработка детали будет происходить через workTime а именно 5 сек. но тут же не дожидаяьс этих самых 5-ти сек, у удаляю данный объект из вектора buferBeforeFirstWork.remove((buferBeforeFirstWork.size()-1));//delete this detail with bufer т.е. когда я начинаю пытаться произвести действия над ОБЪЕКТОМ деталь, его уже просто нету, а метод Start начинает работать с копией ссылкой на ОБЪЕКТ которого уже попросту нет. в С++ есть конструктор копирования, как в Java это делается корректно? |
||||
|
|||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
выполнение этого кода приведет к тому, что ссылка на объект будет удалена из коллекции. Сам объект не будет удален (точнее говоря, не будет собран сборщиком мусора), потому что у вас остается активная ссылка на этот объект. В отличие от C++ в языке Java вы не можете явным образом освободить память, занимаемую объектом. Значит, в копировании нет никакой необходимости. Кстати, для коллекций FIFO(LIFO) удобнее пользоваться какой-либо реализацией интерфейса Queue -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| initmax |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Благодарю за ответ, но с перепугу реализовал клонирование
|
|||
|
||||
| initmax |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 24.7.2009 Репутация: нет Всего: нет |
Закончил написание,
Задание такое: На обрабатывающий участок цеха поступают детали в среднем через 50 мин. Первичная обработка деталей производится на одном из двух станков. Первый станок обрабатывает деталь в среднем 40 мин. и имеет до 4% брака, второй соответственно 60 мин и имеет 8% брака. Все бракованные детали возвращаются на повторную обработку на второй станок. Детали попавшие в разряд бракованных дважды, считаются отходами. Вторичную обработку проводят также два станка в среднем 100 мин каждый. Причём первый станок обрабатывает имеющиеся в накопителе после первичной обработки детали, а второй станок подключается при образовании в накопителе задела больше 3-х деталей. Все интервалы времени распределены по экспоненциальному закону. Смоделировать обработку на участке 500 деталей. Определить загрузку второго станка на вторичной обработке и вероятность появления отходов. Определить возможность снижения задела в накопителе и повышения загрузки второго станка на вторичной обработке. Реализация:
Это сообщение отредактировал(а) initmax - 28.12.2009, 11:55 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |