线程可能导致内存泄露的情况

     继承Thread的线程,在交给jdk1.4并发包的线程池执行完毕后并没有被释放资源,而且也没被再利用,而是白白占着内存,导致内存泄露。

    

     默认的Thread本身初始化在1.4是将自己加入了一个ThreadGroup,如果你没有调用它的start方法,JVM不会在该线程结束后将这个thread从TreadGroup中移除,这就是造成内存泄露的原因所在。不过在JDK6上,将加入ThreadGroup这个操作从构造函数转移到了start方法,避免了这个问题。

 

     JDK的concurrent并发包的线程池可以执行实现了Runnable接口的线程,不要使用继承Thread的类,好的编程实践是给线程池传递实现了Runnable接口的类。

 

     这个问题从侧面提醒我们,实现接口总比继承好!

 

 

参考文章:

 

http://www.iteye.com/topic/481170

http://www.iteye.com/topic/11217?page=1

http://www.iteye.com/topic/263928?page=1

你可能感兴趣的:(jvm,jdk,thread,编程)