日期:2014-05-20  浏览次数:20651 次

线程间的通信,为什么输出线程先执行也能读到信息???
import   java.io.*;
class   Test
{
                public   static   void   main(String[]   args)
                {
                                PipedOutputStream   pos=new   PipedOutputStream();
                                PipedInputStream   pis=new   PipedInputStream();
                                try
                                {
                                                pos.connect(pis);
                                                new   Consumer(pis).start();         //输出线程先执行
                                                Thread.sleep(3000);                       //而且我还暂停了
                                                new   Producer(pos).start();
                                }
                                catch(Exception   e)
                                {
                                                e.printStackTrace();
                                }
                }
}

class   Producer   extends   Thread
{
                private   PipedOutputStream   pos;
                Producer(PipedOutputStream   pos)
                {
                                this.pos=pos;
                }
                public   void   run()
                {
                                try
                                {
                                                pos.write( "unhappyless ".getBytes());