可以在多个线程里同时写和flush。
前提是:每次write的是整个消息体。 如果不是整个消息,那么可能A写了一半,B写了一些,然后A写了另一半, 那么消息就错乱了。
public static void star() throws IOException{ new Thread() { @Override public void run() { ch.write("1111"); try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } ch.writeAndFlush("2222"); } }.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } new Thread() { @Override public void run() { ch.writeAndFlush("333333");
} }.start(); }
上例执行结果是1111333333,第二次是2222。
所以: channel.write(1111); channel.writeAndFlush(2222); 这种写法是存在错乱的可能的。
|