黑马程序员技术交流社区
标题:
这题怎么答??????
[打印本页]
作者:
liwugang
时间:
2014-9-11 22:47
标题:
这题怎么答??????
分析以下程序运行结果,说明原理。(没有分析结果不得分)
public class ThreadTest {
public static void main(String args[]) {
MyThread t = new MyThread();
t.run();
t.start();
System.out.println("A");
}
}
class MyThread extends Thread {
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println("B");
}
}
作者:
夜半风
时间:
2014-9-11 23:20
不知道分析的对不对,不对的话,哪位大神给指导下。
先运行run函数,然后t进程执行,但是t进程要进行准备资源和获取执行权,并有立即执行,而是主进程获取了执行权,先执行了主进程,主进程执行完释放了执行权,然后才轮到t进程执行。
作者:
yuli2039
时间:
2014-9-11 23:25
本帖最后由 yuli2039 于 2014-9-11 23:27 编辑
主线程从上往下执行:
t.run();//执行到这一句,是直接调用t对象的run方法,没有启动新线程,主线程要sleep3秒,然后打印 B
t.start();//主线程执行到这句,开启了一个新线程,主线程继续往下执行,新线程sleep3秒后打印 B,而主线程并没有sleep动作
System.out.println("A");//主线程打印 A
新线程sleep 3秒,所以主线程的A会先打出来,打印结果 B A B
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2