本帖最后由 charlesxu 于 2014-12-16 09:57:10 编辑

解决方案 »

  1.   


    这个里面涉及的知识面比较多,不只是关于一条语句的。基本的问题就是为啥Function_001里要用线程?这个线程里有个while循环从Socket的流里读值,值读出来了就结束。40分啊,来者有份啊!!!
      

  2.   

    或者一步一步的问吧,请问lock.wait(1000);是锁定Thread_02还是Thread_01?
      

  3.   

    下面代码里Thread_02.start();放到了synchronized里,但是synchronized为什么不得到this这个锁?而要新生成一个对象lock,然后得到这个锁呢?既然这个wiat是为了让Thread_01等待,直到Thread_02执行完成,那不就应该让synchronized得到this这个锁吗?难道在Thread_01里生成的任何对象作为synchronized的锁,都可以锁定Thread_01吗?
        private String Function_001(){
            final Object lock = new Object();
            String result;
            Thread Thread_02 = new Thread() {
                @Override
                public void run() {
                    try {
                        while (result=bis.readLine()==null);
                        //这是从Thread_01里已经建立的Socket里读值,读到值后才推出while循环。
                    }catch (IOException e) {
                        e.printStackTrace();
                    }
                    synchronized (lock) {
                        lock.notifyAll();
                    }
               }
            }
            try {
                synchronized (lock) {
                    thread_02.start();
                    lock.wait(1000);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return result;
        }    
      

  4.   

     据我所知,线程启动后,就执行接下来的语句啦.是与线程同步的~
     你可以用获取时间来查看查看.结尾时间分别放在run方法外面,与run方法里面.看看各自需要多少时间吧~
      

  5.   


    这个里面涉及的知识面比较多,不只是关于一条语句的。基本的问题就是为啥Function_001里要用线程?这个线程里有个while循环从Socket的流里读值,值读出来了就结束。40分啊,来者有份啊!!!
    主线程里面使用子线程的目的就是迅速相应请求,就像你去寄快递,只要寄出去了快递公司就告诉你OK了,但是怎么运送,什么时候收到就是另外一回事儿了。
      

  6.   

    Function_002开启了Function_001的Thread-02线程,只是开启而已,相当于现在存在两个线程 一个就是执行 function-002的线程和thread-02线程  两个互不影响,互不干涉