读书人

关于start调用有关问题

发布时间: 2013-11-02 19:41:10 作者: rapoo

关于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();//到这里的话打印哪个都是不确定的。哪个快就执行哪个打印。

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

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

读书人网 >J2EE开发

热点推荐