LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2144|回复: 0

java怎样才能正常关闭一个线程啊?

[复制链接]
发表于 2006-12-1 01:13:35 | 显示全部楼层 |阅读模式

  1. 我写了两个类...想通过java的垃圾收集来关掉我在运行的thread...
  2. 但调用function2()进行关闭时...会出现

  3. java.net.SocketException: socket closed
  4.         at java.net.PlainDatagramSocketImpl.receive0(Native Method)
  5.         at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
  6.         at java.net.DatagramSocket.receive(DatagramSocket.java:712)
  7.         at serverRun.Server.recPacket(Server.java:33)
  8.         at serverRun.Server.run(Server.java:22)

  9. class A{
  10.    private B b;
  11.    function1(){
  12.      b = new B();
  13.      b.start();
  14.    }
  15.    function2(){
  16.     b.threadStop()
  17.    }
  18. }

  19. class B extends Thread{
  20. private boolean threadStop = false;
  21. int port;
  22. DatagramSocket socket;
  23.   public void run(){
  24.     try{
  25.        while(threadStop == false){
  26.         //udp 接收信息
  27.      }catch(...){
  28.        ....
  29.       }
  30.   }

  31. public void threadStop(){
  32.                 this.threadStop = true;
  33.                 this.port = 0;
  34.                 try{
  35.                         //socket.disconnect();  如果用disconnect 就会倒致程序死掉..
  36.                         socket.close();
  37.                 }catch(Exception ex){
  38.                        
  39.                 }finally{
  40.                         this.socket = null;
  41.                 }               
  42.         }
  43. }

复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表