当前位置:编程学习 > JAVA >>

李兴华javav视频教程多线程有点不明白 大家帮我解答一下

class MyThread implements Runnable{ // 实现Runnable接口
public void run(){ // 覆写run()方法
for(int i=0;i<3;i++){
System.out.println(Thread.currentThread().getName()
+ "运行,i = " + i) ; // 取得当前线程的名字
}
}
};
public class ThreadAliveDemo{
public static void main(String args[]){
MyThread mt = new MyThread() ; // 实例化Runnable子类对象
Thread t = new Thread(mt,"线程"); // 实例化Thread对象
System.out.println("线程开始执行之前 --> " + t.isAlive()) ; // 判断是否启动
t.start() ; // 启动线程
System.out.println("线程开始执行之后 --> " + t.isAlive()) ; // 判断是否启动
for(int i=0;i<3;i++){
System.out.println(" main运行 --> " + i) ;
}
// 以下的输出结果不确定
System.out.println("代码执行之后 --> " + t.isAlive()) ; // 判断是否启动

}
};


运行结果如图。
 我明白代码运行之后会有true或者false。 但是不明白 (代码执行之后-->true) 为什么会在(线程运行,i=2 )后面出现 (线程运行,i=2)说明线程已经执行完了啊 但是代码执行之后 应该是false才对啊。
--------------------编程问答-------------------- run方法执行完了不代表线程就结束了 --------------------编程问答--------------------
引用 1 楼 msj100ff 的回复:
run方法执行完了不代表线程就结束了

同意楼上,run方法执行完了,一般情况表示线程结束,但是不代表run方法执行完了,线程立即结束了,此时线程需要释放资源和通知系统当前线程结束。线程的执行一般是基于时间片的调度,如果run方法执行完时,时间片刚好用完,则isAlive为ture,楼主可以试验下,多此运行程序的输出结果是不是都一样,或者在System.out.println("代码执行之后 --> " + t.isAlive()) ; 之前添加一些其它输出操作
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,