Сообщений: 74
Тем: 23
Зарегистрирован: Jul 2012
Репутация:
-28
Код: if(region == MapRegionTable.getInstance().getMapRegion(player.getX(), player.getY()))
{
player.sendPacket(cs);
}
//пауза 5 секунд
player.sendPacket(dc);
имеется следующий участок кода. Хочу сделать "паузу" (5 сек) перед тем, как отправлять второй пакет player.sendPacket(dc).
Подскажите как? Искал что-то подобное в квестах, но там другой принцип.
clan: Soprano :redlol:
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
ТреадПулМенеджер, с ранаблом на борту.
Сообщений: 376
Тем: 12
Зарегистрирован: Jul 2012
Репутация:
1,000
doDie Написал:Код: if(region == MapRegionTable.getInstance().getMapRegion(player.getX(), player.getY()))
{
player.sendPacket(cs);
}
//пауза 5 секунд
player.sendPacket(dc);
имеется следующий участок кода. Хочу сделать "паузу" (5 сек) перед тем, как отправлять второй пакет player.sendPacket(dc).
Подскажите как? Искал что-то подобное в квестах, но там другой принцип.
Thread.sleep нет смысла ставить тк не передаст управление.
Sheduler есть такое
PHP код: <?php
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
@Override
public void run() {
player.sendPacket(dc);
}
},5000);
Сообщений: 74
Тем: 23
Зарегистрирован: Jul 2012
Репутация:
-28
Код: ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
@Override
public void run() {
player.sendPacket(dc);
}
},5000);
немного не понятно, он без run работать может? хотелось бы что-то как отдельную функцию, что бы использовать и все. управление пошло дальше.
А так придется полностью код переписывать аж с самого верха..
clan: Soprano :redlol:
Сообщений: 1,485
Тем: 12
Зарегистрирован: Mar 2010
Репутация:
2,994
Runnable без run работать не может.
Вам и так дали пример обычной задачи - ее конечно лучше вынести с конструктором и статическую, а так работать конечно будет.
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
08-06-2012, 05:12 PM
(Сообщение последний раз редактировалось: 08-06-2012, 05:45 PM KilRoy.)
doDie;212765 Написал:немного не понятно, он без run работать может? хотелось бы что-то как отдельную функцию, что бы использовать и все. управление пошло дальше.
А так придется полностью код переписывать аж с самого верха.. Делайте как вам удобно. Вы просили вариант, вам дали 2ва (Щас поясню 2й, как сказал Визор, и что я имел введу):
Код: ThreadPoolManager.getInstance().scheduleGeneral(new runStaticClass(player, sp), 5000L);
private class runStaticClass extends RunnableImpl
{
private Player _player;
private IStaticPacket _sp;
runStaticClass(Player player, IStaticPacket sp)
{
_player = player;
_sp = sp;
}
@Override
public void runImpl()
{
_player.sendPacket(_sp);
}
}
Сообщений: 74
Тем: 23
Зарегистрирован: Jul 2012
Репутация:
-28
Блин, а не существует никакой простой задержки по типу Sleep(5); или Wait(5);? Где можно юзнуть системное время к примеру, потом передать управление дальше по истечению, или как бы просто использовать функцию из какого-то стандартного класса. Мне кажется, что программеры явы не ломают каждый раз голову над тем, что бы сделать задержку "по типу" через Runnable, или того что вы описывали выше.
У меня такой участок кода, в котором все написанное выше просто не позволяет использовать подобные конструкции.
clan: Soprano :redlol:
Сообщений: 2,102
Тем: 40
Зарегистрирован: Apr 2008
Репутация:
12,296
doDie;212820 Написал:У меня такой участок кода, в котором все написанное выше просто не позволяет использовать подобные конструкции. лол что?
doDie;212820 Написал:Блин, а не существует никакой простой задержки по типу Sleep(5); или Wait(5);? Где можно юзнуть системное время к примеру, потом передать управление дальше по истечению, или как бы просто использовать функцию из какого-то стандартного класса. Мне кажется, что программеры явы не ломают каждый раз голову над тем, что бы сделать задержку "по типу" через Runnable, или того что вы описывали выше. Конечно, и вотЭто(да да, поиск по ЗГ)
Ну и на конец: Сюда
---
Забыл самое главное
Сообщений: 1,759
Тем: 13
Зарегистрирован: May 2011
Репутация:
3,205
doDie Написал:Блин, а не существует никакой простой задержки по типу Sleep(5); или Wait(5);? Где можно юзнуть системное время к примеру, потом передать управление дальше по истечению, или как бы просто использовать функцию из какого-то стандартного класса. Мне кажется, что программеры явы не ломают каждый раз голову над тем, что бы сделать задержку "по типу" через Runnable, или того что вы описывали выше.
У меня такой участок кода, в котором все написанное выше просто не позволяет использовать подобные конструкции. вы на время застопите main thread - в игровом сервере это недопустимо!
Сообщений: 376
Тем: 12
Зарегистрирован: Jul 2012
Репутация:
1,000
Ну если поставить Thread.sleep он не передает управление, а ставит поток в ожидание, если у вас в пуле 20 потоков и на этот участок попадут 20 игроков одновременно у вас будут проблемы в виде застоя пула.
Если там какой-то код требующий исполнения после, перенесите его в run()
|