Netty, слушатель для ChannelFuture

132
10 декабря 2018, 23:40

При вызове метода await() класса ChannelFuture после отправки сообщения клиенту, выбрасывается исключение:

java.lang.IllegalStateException: await*() in I/O thread causes a dead lock or sudden performance drop. Use addListener() instead or call await*() from a different thread.

как я понимаю нужно добавить слушатель на ChannelFuture, но в большинстве примеров слушатель добавляется после того как создается экземпляр ChannelFuture:

    public class FileHandler  extends SimpleChannelUpstreamHandler{
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
    FileInputStream in;
    try {
        in = new FileInputStream("C:\\Users\\User\\Desktop\\chelovek_gory_stroenie_120852_1600x1200.jpg");
        FileRegion region = new DefaultFileRegion(in.getChannel(),0,762511);
        ChannelFuture chf = ctx.getChannel().write(region);
        chf.addListener(new ChannelFutureListener() {
            @Override
            public void operationComplete(ChannelFuture future) throws Exception {
                // TODO Auto-generated method stub
                System.out.println("завершено");
            }
        });
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
}
}

Есть ли способ заранее добавить этот слушатель к ChannelFuture, чтобы каждый раз не добавлять его при создании нового экземпляра?

READ ALSO
java compiler, generics и наследование

java compiler, generics и наследование

Есть некий обобщенный интерфейс и класс, его реализующий

134
Изучение Spring (план / схема) [закрыт]

Изучение Spring (план / схема) [закрыт]

Задался вопросом изучения Spring, много информации, много видео, много книг, но нет ни одного плана / схемы, иллюстрации последовательности действий

161
Какие способы есть для подключения к серверу с помошью Android SDK

Какие способы есть для подключения к серверу с помошью Android SDK

Требуется подключиться к серверу и получить данные без помощи Retrofit или других библиотек, кроме непосредственно Android SDKAPI предоставляет для...

139
Наследование методов Java

Наследование методов Java

Есть класс Warship, в котором есть метод, ну например turnLeft()Я создаю класс Destroyer, который наследует от Warship, потом класс GroznyyKlass, который наследует...

140