首先你先把对象从Vector里面移除,然后把那个对象赋为null
我们所能做的也就是这些了,至于jvm什么时候来回收垃圾,我们也不知道

解决方案 »

  1.   

    但是我我调试了一个线程对象:
      class A extends Thread
      {
        public void run()
        {
           while(true)
           {
             System.out.println("aaa");
           }
        }
    public static void main(String[] args)
    {
       A a=new A();
       a.start();
       a=null;
    }
    //程序根本不终止,不停的输出"aaa";
    //我需要只根据对象句柄(其它的条件无法知道),来回收该对象.
      

  2.   

    原来你是这样的问题啊
    那刚才我是理解错了
    以前有个stop()方法,不过现在被Deprecated
    现在你就用a.destroy()吧
      

  3.   

    to jFresH_MaN()(AbsolutelyFresh)(java欣人) 
    不行呀。
    首先:所有对象都放在Vector 里面,根本就不知道哪是线程对象,哪是其它的对象。
    其次;
    对于:3.对象里面包含了线程对象
    CLASS C
    {
    Thread cc;
    }
    Vecotr 里面包存的只是C 对象句柄。
      

  4.   

    那就很难处理了
    你在这个Vector里面所有可能的类里面都加一个destroy()方法,然后在里面实现相应的方法
    比如
    CLASS C
    {
    Thread cc;
    public void destroy() {
     cc.destroy();
    }
    }
    你以后只要先把对象从Vector里面移除,然后调用destroy()方法
      

  5.   

    简便的方法可以像楼上说的,定义Destroyable接口
    interface Destroyable{
       abstract public void destroy();
    }
    然后让放入vector中的对象都实现这个接口