黑马程序员技术交流社区

标题: 多线程,cpu 内存问题 [打印本页]

作者: 心灵之歌    时间: 2013-8-18 17:01
标题: 多线程,cpu 内存问题
下面这个程序运行的结果是  'B'  B"'A'     还是'‘B’  'A‘  ’B‘’.为什么?
求大神指点...  
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");
            }
    }

作者: a2213502    时间: 2013-8-18 17:33
结果是BAB, 首先从主线程开始执行,当执行到t.run()的时候,线程MyThread还没有开启,所以t.run();是调用run()方法,而主线程进去执行run方法的时候,也会sleep3000毫秒,输出一个B 然后执行t.start(); 这时候线程MyThread 才开启。主线程跟这个线程抢CPU的执行权,但是MyThread sleep 3000毫秒;所以先输出主线程的A 最后再输出B。
作者: 杨增坤    时间: 2013-8-19 23:25
这都不一定!看主线程和线程t那一个线程先抢占到了CPU了,

还要看在执行过程个如果交互的话,那么也会是另一种情况!
作者: 杨增坤    时间: 2013-8-19 23:25
这都不一定!看主线程和线程t那一个线程先抢占到了CPU了,

还要看在执行过程个如果交互的话,那么也会是另一种情况!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2