public class ThreadTest {
public static void main(String args[]) {
MyThread t = new MyThread();
t.run(); 1.你这里调用的是run()方法,并没有开启线程,而是主函数在运行run()方法中的内容
t.start();3.主线程将副线程也就是你建立的线程开启了,这是有2个线程在运行,副线程开启后去执行run()方法中的内容了,而主线程继续向下执行。
System.out.println("A");4.主线程运行到了这里,为什么副线程没有抢到资源,因为副线程在下面被sleep了,主线程在这里打了"A". }
}
class MyThread extends Thread {
public void run() { 2.主函数的线程运行到了这里,主线程睡了3秒,然后打印了"B",
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
}
System.out.println("B");5.副线程醒了以后打印了"B",程序结束。
}
}
所以结果当然是BAB了,线程拿到执行权是随机的,但是对线程进行控制。
红色的字是我写的5个步骤,希望对你有帮助。 |