2013-06-30 4 views
0

У меня следующая цель: У меня есть многопользовательская игра, где тысячи персонажей с уникальными способностями. Эти способности включаются или выключаются в определенное время - т.е. он может включаться в 3 часа дня. и он может выключиться в 15.05. Я думал реализовать его как глобальный счетчик с привязанными к нему событиями, так что, когда придет время, событие активируется, и возможность включается. Как я могу достичь этого в Java? Если я создаю слишком много потоков, это может привести к потере системы, потому что слишком много символов. Какой инструмент (или, может быть, другой метод) использовать?Запланированные задания в Java - какой инструмент использовать

+2

Вы пробовали 'ScheduledThreadPoolExecutor'? –

+0

Не совсем. Но я прошу совета выбрать sth, который является лучшим выбором. –

+0

вы можете создавать события (задачи таймера или ScheduledFutures) для каждого символа, но иногда бывает лучше создавать события на основе времени события, а затем перебирать символы и при необходимости выполнять событие. Например. если у вас есть 1.000.000 символов, вы, вероятно, не хотите иметь пять событий на символ в очереди событий, где каждое событие только модифицирует флаг внутри объекта символа. Даже если вы используете ScheduledThreadPoolExecutor с 16 потоками на оборудовании с 16 родными потоками, вы пропустите большую часть времени события. –

ответ

1

Попробуйте Quartz scheduler, мы используем его для проектов от небольших до крупных приложений.

Смежные вопросы