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要被打印出来。
------解决方案--------------------