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();//到这里的话打印哪个都是不确定的。哪个快就执行哪个打印。
按照一楼程序就可以看出来了。
------解决方案--------------------
恩,这个顺序确实没法确定。