Мне нужно отправить несколько файлов по одному синхронно, но когда я отправляю файл с каналом, а затем вызываю метод 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.
вот код:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import org.jboss.netty.channel.ChannelFuture;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.DefaultFileRegion;
import org.jboss.netty.channel.FileRegion;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
public class FileHandler extends SimpleChannelUpstreamHandler{
@Override
public void messageReceived(ChannelHandlerContext ctx,
MessageEvent e) {
FileInputStream in;
try {
in = new FileInputStream("C:\\Users\\che.jpg");
FileRegion region = new
DefaultFileRegion(in.getChannel(),0,762511);
for(int i=0;i<11;i++) {
ChannelFuture chf = ctx.getChannel().write(region);
try {
chf.await();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
Как я могу построить обработчик, который будет синхронно отправлять несколько файлов с использованием нулевой копии?