Java-Java:用这种方式来控制线程的中止,线程所占的资源会被释放吗?
我采用以下的方式可以达到线程的run()不再执行,但线程所占用的内存会被释放吗?
public class DemoThread extends Thread {
private boolean stop = false;
private int count = 0;
public void run() {
while (true) {
if (!stop) {
try {
System.out.println("线程运行中,count=" + count);
count += 300;
if (count > 1000) {
stop = true;
}
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这肯定回收不掉的啊,stop这一开关为什么不放在while那儿呢?
有几个问题:
1、stop变量会有可见性问题,加violatile或使用AtomicBoolean
2、如上面几位说的,放在while里头可能更好一些
3、只要run方法一直再运行,那就释放不掉
while(true) 肯定没释放掉啊。