日期:2014-05-20  浏览次数:20748 次

Thread 的问题,请高手解答。
package com.Thread.Demo1;
import java.awt.*;
import javax.swing.*;
import java.util.concurrent.RunnableFuture;

public class MyThread {
public static void main(String[] args) {
// TODO Auto-generated method stub
Aaa a1=new Aaa(10);
Thread a_t=new Thread(a1);
a_t.start();
}

}

class Aaa implements Runnable
{
int x;
public Aaa(int x)
{
this.x=x;
}

@Override
public void run() 
{
// TODO Auto-generated method stub
while(true)
{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x--;
System.out.println("x="+x);
if(x<0)
{
break;
}

}

}

}

问题是,这里break后,a_t.start()的线程是不是已经dead了?如果不是有什么办法可以让这个线程结束?
if(x<0)
{
break;
}


------解决方案--------------------
问题是,这里break后,a_t.start()的线程是不是已经dead了? 是
但一般是while(boolean)


public void run() {
boolean isDead = true;
while (isDead) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x--;
System.out.println("x=" + x);
if (x < 0) {
isDead = false;
}

}

}
------解决方案--------------------
如果break被执行,那么就会跳出while(true)循环,run函数执行完毕,线程就自然结束了。
------解决方案--------------------
执行了break语句,就跳出了while循环了,线程也就结束了。因为是先执行打印语句,所以-1要被打印出来。
------解决方案--------------------
探讨
帮助文档里边的stop(),是不是在后面的升级中已经得到了优化?