多线程之间通信必然会用到管道pipe,我有以下疑问想问下,
a.如果我一般写入未完成另一边是等待写入完成后再读取还是边写就能边读?
b.譬如我写入数据另一边线程还没有读完,我这边又开始写入,会不会影响另一条线程读取?

解决方案 »

  1.   

    我补充下吧,其实我是想知道pipe通信是线程安全的么
      

  2.   

    一次write操作不执行完,是不会read出结果的。所以可以说是线程安全的。
    至于写入未完成另一边是否等待完成需要看你的blocking属性是否为true,为true则等待write完再read,如果为false且write未完则read返回null
      

  3.   

    请问下blocking属性在哪里设置?没有看到方法,我用的是nio的pipe
      

  4.   

    请问下blocking属性在哪里设置?没有看到方法,我用的是nio的pipe
    大概是Pipe pipe=Pipe.open();
    Pipe.SourceChannel pisc=pipe.source();
    pisc. configureBlocking(false);
      

  5.   

    请问下blocking属性在哪里设置?没有看到方法,我用的是nio的pipe
    大概是Pipe pipe=Pipe.open();
    Pipe.SourceChannel pisc=pipe.source();
    pisc. configureBlocking(false);

    感谢!