日期:2014-05-20  浏览次数:20720 次

关于一段多线程程序的执行顺序
两个类
Java code

public class ThreadMain
{
    public static void main(String[] args)
    {
        Thread1 t1 = new Thread1();
        t1.start();
        System.out.println("I'm from threadMain");
        System.out.println("wait for 5 seconds");
        try
        {
            Thread.sleep(5000);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        System.out.println("threadMain comes back");
    }
}

public class Thread1 extends Thread
{
    public void run()
    {
        System.out.println("I'm from thread1");
    }
}



为什么我的执行结果是:
I'm from threadMain
I'm from thread1
wait for 5 seconds
threadMain comes back

------解决方案--------------------
线程的执行顺序是不确定的。 你要是需要按你的想法来得到结果,线程有个优先顺序的。 你可以设置
------解决方案--------------------
你下次运行可能就不是这个顺序了
------解决方案--------------------
调用了 t1.start();
两个线程都在执行 没有顺序的
------解决方案--------------------
public void run()
{
try
{
Thread.sleep(500);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println("I'm from thread1");
}


这样你再试试看
------解决方案--------------------
探讨
引用:
引用:

引用:
线程的执行顺序是不确定的。 你要是需要按你的想法来得到结果,线程有个优先顺序的。 你可以设置

如果不设置优先级,主线程的级别最高,应该主线程执行完或中断,其他线程再执行,不是吗?

那还是多线程吗?


请指教,同一时间,cpu是如何分配……

------解决方案--------------------
从你调用start()方法的瞬间,执行顺序就不确定了
------解决方案--------------------
探讨
引用:
引用:

引用:
线程的执行顺序是不确定的。 你要是需要按你的想法来得到结果,线程有个优先顺序的。 你可以设置

如果不设置优先级,主线程的级别最高,应该主线程执行完或中断,其他线程再执行,不是吗?

那还是多线程吗?


请指教,同一时间,cpu是如何分配……