关于线程结束的问题 我试过编写一个方法里每次调用这个方法都创建10个线程去干一件事情,然后多次调用这个方法,调用多了以后发现会出现java heap space这样的提示内存溢出的问题,而且接下来提示“Thread-1000”之类的反正好像意味着之前的线程一直在累加,我不知道这是怎么回事,难道调用一次方法后,方法里的10个线程不会自动释放吗? 新人求解 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Java 虚拟机不会自动释放线程,直到下列任一情况出现时为止1:调用了 Runtime 类的 exit 方法,并且安全管理器允许退出操作发生。 2:所有线程都已停止运行,无论是通过从对 run 方法的调用中返回,还是通过抛出一个传播到 run 方法之外的异常。 3:执行Thread对象的interrupt()方法,中断线程。 调用完了以后你join()了吗? 当然join()了,方法里调用线程如下: Thread[] thread=new Thread[10]; thread[0]=new Thread(new SearchCrawler(starturl,nowtime)); thread[0].start(); Thread.sleep(1000); for(int i=1;i<10;i++) { thread[i]=new Thread(new SearchCrawler(starturl,nowtime)); thread[i].start(); } for(int j=0;j<10;j++) { thread[j].join(); }然后我就是多次调用这个方法了 你这个join执行的时候,前面的线程都已经启动了,你还多次调用这个方法,既然是多线程,那也就不是前面10个执行完后面10个再执行,你这里的join没起到你想起的作用,你应该把join直接放到start后面去 其他地方不清楚,不过我就是奇怪它为什么提示“Thread-1000”之类的信息,给我感觉之前的线程一直没有释放。 你看我贴出来的代码,我调用了join()了,现在我想想可能内存溢出和线程无关,不过我还是想知道为什么会提示“Thread-1000”这样的信息? 请问各位大牛,java如何一次性读取一个目录下的多个文件?? java中可变参数函数的重写 Think in Java内的一习题的思考 iReport 报表中文显示的问题? 创建String对象的问题 能这样写吗?请帮我看一下,谢谢 为什么JFrame中只能显示一个控件? 新手求助--基本常识问题--如何在一台机器上虚拟出在不同JVM上的程序的运行环境 为什么我的第一个Java学习程序可以编译,但是不能执行? PART TIME合作方案 java默认构造方法是如何初始化的? 急!!!JNI调用问题,望兄弟们回复,不胜感谢!
1:调用了 Runtime 类的 exit 方法,并且安全管理器允许退出操作发生。
2:所有线程都已停止运行,无论是通过从对 run 方法的调用中返回,还是通过抛出一个传播到 run 方法之外的异常。
3:执行Thread对象的interrupt()方法,中断线程。
调用完了以后你join()了吗?
thread[0]=new Thread(new SearchCrawler(starturl,nowtime));
thread[0].start();
Thread.sleep(1000);
for(int i=1;i<10;i++)
{
thread[i]=new Thread(new SearchCrawler(starturl,nowtime));
thread[i].start();
}
for(int j=0;j<10;j++)
{
thread[j].join();
}
然后我就是多次调用这个方法了