Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
простая задержка (java)
#1
Код:
if(region == MapRegionTable.getInstance().getMapRegion(player.getX(), player.getY()))
{
     player.sendPacket(cs);
}
//пауза 5 секунд
player.sendPacket(dc);

имеется следующий участок кода. Хочу сделать "паузу" (5 сек) перед тем, как отправлять второй пакет player.sendPacket(dc).
Подскажите как? Искал что-то подобное в квестах, но там другой принцип.
clan: Soprano :redlol:
Ответ
#2
ТреадПулМенеджер, с ранаблом на борту.
Ответ
#3
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);
Ответ
#4
Код:
ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {        
    @Override
    public void run() {
        player.sendPacket(dc);
    }
},5000);
немного не понятно, он без run работать может? хотелось бы что-то как отдельную функцию, что бы использовать и все. управление пошло дальше.
А так придется полностью код переписывать аж с самого верха..
clan: Soprano :redlol:
Ответ
#5
Runnable без run работать не может.
Вам и так дали пример обычной задачи - ее конечно лучше вынести с конструктором и статическую, а так работать конечно будет.
Ответ
#6
doDie;212765 Написал:немного не понятно, он без run работать может? хотелось бы что-то как отдельную функцию, что бы использовать и все. управление пошло дальше.
А так придется полностью код переписывать аж с самого верха..
Делайте как вам удобно. Вы просили вариант, вам дали 2ва Wink (Щас поясню 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);
        }
    }
Ответ
#7
Блин, а не существует никакой простой задержки по типу Sleep(5); или Wait(5);? Где можно юзнуть системное время к примеру, потом передать управление дальше по истечению, или как бы просто использовать функцию из какого-то стандартного класса. Мне кажется, что программеры явы не ломают каждый раз голову над тем, что бы сделать задержку "по типу" через Runnable, или того что вы описывали выше.
У меня такой участок кода, в котором все написанное выше просто не позволяет использовать подобные конструкции.
clan: Soprano :redlol:
Ответ
#8
doDie;212820 Написал:У меня такой участок кода, в котором все написанное выше просто не позволяет использовать подобные конструкции.
лол что?


doDie;212820 Написал:Блин, а не существует никакой простой задержки по типу Sleep(5); или Wait(5);? Где можно юзнуть системное время к примеру, потом передать управление дальше по истечению, или как бы просто использовать функцию из какого-то стандартного класса. Мне кажется, что программеры явы не ломают каждый раз голову над тем, что бы сделать задержку "по типу" через Runnable, или того что вы описывали выше.
Конечно, и вотЭто(да да, поиск по ЗГ)
Ну и на конец: Сюда
---
Забыл самое главное
Ответ
#9
doDie Написал:Блин, а не существует никакой простой задержки по типу Sleep(5); или Wait(5);? Где можно юзнуть системное время к примеру, потом передать управление дальше по истечению, или как бы просто использовать функцию из какого-то стандартного класса. Мне кажется, что программеры явы не ломают каждый раз голову над тем, что бы сделать задержку "по типу" через Runnable, или того что вы описывали выше.
У меня такой участок кода, в котором все написанное выше просто не позволяет использовать подобные конструкции.
вы на время застопите main thread - в игровом сервере это недопустимо!
Ответ
#10
Ну если поставить Thread.sleep он не передает управление, а ставит поток в ожидание, если у вас в пуле 20 потоков и на этот участок попадут 20 игроков одновременно у вас будут проблемы в виде застоя пула.
Если там какой-то код требующий исполнения после, перенесите его в run()
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Lineage2 java Chronicle3 сборка AlexBayev 0 277 07-20-2024, 05:23 PM
Последний пост: AlexBayev
  Порекомендуйте хорошую Java сборку L2 GF (PTS не потяну ибо навыков 0 ) Force 0 843 10-28-2023, 12:02 PM
Последний пост: Force
  Java dev hired! Krasib 0 1,104 08-15-2022, 10:00 AM
Последний пост: Krasib
  SVN ссылки Java серверов. PROGRAMMATOR 284 234,155 11-19-2020, 08:50 PM
Последний пост: AbsolutePower
  Java координаты, различия PTS и Java, какие сборки хороши (iL) varted 5 2,484 09-12-2018, 08:29 AM
Последний пост: varted
  l2 c4 java estorq 0 1,317 08-17-2018, 10:07 PM
Последний пост: estorq
  Топовая Java сборка под х3 и х1200 NovaPlanet 32 8,362 11-22-2016, 11:38 AM
Последний пост: 6bit
  Java в Class virusoflove 1 1,739 10-17-2016, 09:04 AM
Последний пост: Rolfer
  Помогите поставить Java сервер la2 c3! Winst 0 1,181 10-16-2016, 12:34 PM
Последний пост: Winst
  Ищу стабильную сборка java сервера HF introzorn 12 6,161 10-14-2016, 09:34 PM
Последний пост: Mangol

Перейти к форуму:


Пользователи, просматривающие эту тему: 2 Гость(ей)