自己的个人体会,在做一些题的过程中,用注释解释出来,并写出代码运行结果的原因,对深刻理解这道题,很有帮助,这只是我自己的一点体会,我把我做过得一些题写上注释和解释,分享一下,希望对朋友们有一定的帮助
public class Test5 {
public static void main(String[] args) {
//创建线程对象
MyThread t = new MyThread();
//调用其run方法
t.run();
//开启线程
t.start();
//输出字母A
System.out.println("A");
}
}
//创建线程类继承Thread类
class MyThread extends Thread {
//重写其run方法
public void run() {
//捕捉异常
try {
//让该线程休眠3000毫秒
Thread.sleep(3000);
} catch (InterruptedException e) {
}
//输出字母B
System.out.println("B");
}
}
/*运行结果为:
* B
* A
* B
* 运行结果分析:
* 首先,应先明确start()方法和run()方法的区别,
* (1)run()方只是Thread类里的一个普通方法,其可以直接调用多次.
* 其程序执行路径还是只有主线程一条,还是要顺序执行
* (2)start()方法是用来启动线成的,使线程具备了可执行状态.
* 此时线程并没有运行,一旦得到spu时间片,就开始执行run()方法,
* 这里方法run()称为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程随即终止。
* 其次,本题中有两条线程,一条为主线程,另一条为t所代表的线程.
* 当程序运行的时候在主线程内,t对象先调用run()方法,但是主线程要先休眠3000毫秒,休眠结束后,输 出B
* 之后,t所代表的线程开启,主线程和该线程抢占CPU,但是t所代表的线程要先休眠3000毫秒,而主线程不用,
* 所以,主线程先输出A,等t所代表的线程休眠结束后再输出B
*/ |
|