Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
_oper_
Зарегистрирован: 16.03.2005 Сообщения: 4
|
Добавлено: Пн Мар 28 2005 08:34 Заголовок сообщения: Потоки в java |
|
|
Есть поток t, в нем выполняется следующий код
Код: |
while(running)
{
/*
различные действия
*/
try
{
t.sleep(sleepTime);
}
catch(InterruptedException ie) {}
}
|
как можно пробудить эток поток досрочно? до того как пройдет время sleepTime? Можно ли это сделать из функции main того же класса, которому принадлежит поток? |
|
Вернуться к началу |
|
|
Mike
Зарегистрирован: 17.11.2001 Сообщения: 339 Откуда: ekb
|
Добавлено: Пн Мар 28 2005 12:25 Заголовок сообщения: |
|
|
Не работал с Java, но почти уверен, что никак. Я обычно делал так:
for(int i=0;i<10000 && GlobalBreakVal!=42;i++)
{
Sleep(10);
}
....
и как только выставишь GlobalBreakVal=42 ....... |
|
Вернуться к началу |
|
|
OleguS
Зарегистрирован: 09.02.2005 Сообщения: 10 Откуда: Ukraine::Kharkov
|
Добавлено: Вт Мар 29 2005 22:05 Заголовок сообщения: |
|
|
На самом деле можно использовать функцию wait(); для того чтобы "заснуть", а если нужно "разбудить", то notifyAll();, по-моему есть еще просто notify и в ней можно указать конкретный поток. notifyAll разбудит все спящие потоки. И вызвать ее из main можно. Если не разберетесь я могу выслать, или разместить в этой теме, легкий пример где это используется. |
|
Вернуться к началу |
|
|
_oper_
Зарегистрирован: 16.03.2005 Сообщения: 4
|
Добавлено: Ср Мар 30 2005 07:46 Заголовок сообщения: |
|
|
OleguS писал(а): | На самом деле можно использовать функцию wait(); для того чтобы "заснуть", а если нужно "разбудить", то notifyAll();, по-моему есть еще просто notify и в ней можно указать конкретный поток. notifyAll разбудит все спящие потоки. И вызвать ее из main можно. Если не разберетесь я могу выслать, или разместить в этой теме, легкий пример где это используется. |
Спасибо, я уже разобрался. Необходимо было проводить синхронизацию потоков вызывающих метод wait и notify.
Так, если поток был под именем t, то усыплять его надо было:
Код: |
synchronize(t)
{
t.wait(period)
}
|
И аналогично пробуждать. |
|
Вернуться к началу |
|
|
|