首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

关于start调用有关问题

2013-11-02 
关于start调用问题package com.testpublic class MyThread extends Thread{@Overridepublic void run() {

关于start调用问题

package com.test;

public class MyThread extends Thread
{

@Override
public void run() {
System.out.println("run函数");
}

public void disp1()
{
System.out.println("disp函数1");
}

public void disp2()
{
System.out.println("disp函数2");
}
}

package com.test;
public class TestBlockingQueue {

public static void main(String[] args) 
    {
MyThread mt = new MyThread();
mt.start();
mt.disp1();
    }
}


这样写,为什么那个run()函数在disp1()后面执行?原理是啥?
[解决办法]
改成下面的在看看结果。

@Override
    public void run() {
for (int i = 0; i < 10000; i++) {
        System.out.println("run函数");
}
    }
     
    public void disp1()
    {
for (int i = 0; i < 10000; i++) {
        System.out.println("disp函数1");
}
    }

[解决办法]
线程的调用,执行顺序是随有JVM管理。 
[解决办法]

mt.start(); // 当主线程可以理解为main,执行到这里,子线程mt起来之后,mt执行,main继续执行。这两个是同时运行的
        mt.disp1();//到这里的话打印哪个都是不确定的。哪个快就执行哪个打印。

按照一楼程序就可以看出来了。

[解决办法]
恩,这个顺序确实没法确定。

热点排行