Помогите Потоки

  • Автор темы Автор темы AlexMor
  • Дата начала Дата начала
Чего...
Код:
private final List<CraftPlayer> playerView;

public CraftServer(MinecraftServer console, PlayerList playerList) {
   ...
   this.playerView = Collections.unmodifiableList(Lists.transform(playerList.players, new Function() {
   public CraftPlayer apply(EntityPlayer player) {
   return player.getBukkitEntity();}
   }));
   ...
}
Код:
public final List<EntityPlayer> players = new CopyOnWriteArrayList();

public void onPlayerJoin(EntityPlayer entityplayer, String joinMessage) {
    this.players.add(entityplayer);
    ...
}

public String disconnect(EntityPlayer entityplayer) {
    ...
    this.players.remove(entityplayer);
    ...
}
То есть, например в циклах его можно использовать спокойно?
 
Потому что данный метод проходится по всем игрокам, которые когда то были на сервер и проверят isOnline();
По этому причине рекомендуется делать свой собственный метод getOnlinePlayer(name); с помощь эвентов Входа и Выхода игроков заносить\удалять игроков в HashSet<Player>.
В нмс всё равно оперируют листом игроков, элементы которого в геттере перегоняют в бакит игроков.Выгода от своего листа вряд ли будет заметной.А вот про каждого игрока и isOnline() впервые слышу, это где такое есть?
 
Разве с Bukkit можно взаимодействовать не с основного потока?
Вопрос не в том, можно или нельзя, а в том, что это нерационально.
Ну а можно или нет - это уже зависит от задачи. Обычно это не очень рекомендуется, т.к. такие действия могут что-то портить внутри ядра.
В нмс всё равно оперируют листом игроков, элементы которого в геттере перегоняют в бакит игроков.Выгода от своего листа вряд ли будет заметной.А вот про каждого игрока и isOnline() впервые слышу, это где такое есть?
Я выше код кинул. Всё нормально там. Непонятно, что @alexandrage не понравилось
 
Разве с Bukkit можно взаимодействовать не с основного потока?
Естественно. Думаешь как чат работает? Чат обрабатывается в отдельном потоке. То есть если сервер зависнет, то чат будет работать.
 
Вопрос не в том, можно или нельзя, а в том, что это нерационально.
Ну а можно или нет - это уже зависит от задачи. Обычно это не очень рекомендуется, т.к. такие действия могут что-то портить внутри ядра.

Я выше код кинул. Всё нормально там. Непонятно, что @alexandrage не понравилось
Я не смотрел как оно устроенно, но по скорости знаю. Так бы ничего не говорил.
 
Я не смотрел как оно устроенно, но по скорости знаю. Так бы ничего не говорил.
Ну сейчас глянул - там просто отдается лист, который модифицируется при входе/выходе игрока. Но это верно для 1.10+, что там раньше было - лень смотреть.
 
Назад
Верх