public void setMsg(TransportObject msg) { this.msg=msg; synchronized (this) { notify(); } } public void run() { try { synchronized (this) { wait(); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } while(isStart) { //注意,此語句也必須寫在while循環中,由於該線程的開啓是在client類中開啓的,可是setMsg方法 //是在須要時才調用的,即必須讓該線程一直運行,一直嘗試寫,加一個判空的語句來操做具體是否寫 if(msg!=null) { try { oos.writeObject(msg); oos.flush(); msg=null;//此語句必定不能去掉,不然oos.writeObject(msg)語句會一直執行 } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } try { //Log.i("ClientOutputThread","this print is after while loop"); oos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }