可以试着采用线程回调的方法避免用死循环检测是否有消息。
就是在收到消息的时候调用处理消息的方法
这方面的问题《Java网络编程》中的线程那章有很好的说明。

解决方案 »

  1.   

    可以使用ProducerConsumer设计模式。
      

  2.   

    其实NutShell系列书籍中的《Java网络编程》上讲的很清楚透彻。
    还有实例,可以好好看看。我喜欢在书店看,^_^
      

  3.   

    答案是这样的:
    无限制的等待必然耗尽CPU的资源,可以用设置信号量来解决
    即:只有在客户端有消息来的时候才开始等待接受,否则不等待(可以设置等待时间,比如5),超时则退出循环
    我所说的是在Vc下的解决办法,VC下有WaitForSingleObject 等方法可以使用
    ,Java 下虽然没有消息机制,但是可以自己设定信号量
      

  4.   

    是不是当发送线程处理玩数据后,跳出循环,然后当有消息到来时
    再重新调用线程的start()方法开始处理数据,这样就不存在死循环问题了。
      一点拙见,请到家批评指正!!
      

  5.   

    线程一被建立并运行便只会朝着“死”的方向走去,除非你的run()方法里面是个死循环——除非你把整个程序关掉否则是不会被系统回收的。如果你能够很好地利用好几个已建立的线程,一直为你服务,则能够达到运行效率块、节省资源。
    看样子,线程池是很适合你的要求的。
      

  6.   

    线程建立-->等待-->运行(或挂起)-->结束