public class MyThread extends Thread
{
public static void main(String[] args)
{
MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
mt1.start();
System.out.println("one");
mt2.start();
System.out.println("two");
}
public void run(){
System.out.println("Thread");
}
}
在不设置优先级的情况下:执行结果顺序为什么Thread总在one之后呢?有没有出现Thread one Thread two呢?
{
public static void main(String[] args)
{
MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
mt1.start();
System.out.println("one");
mt2.start();
System.out.println("two");
}
public void run(){
System.out.println("Thread");
}
}
在不设置优先级的情况下:执行结果顺序为什么Thread总在one之后呢?有没有出现Thread one Thread two呢?
mt1.start();
System.out.println("one");
mt2.start();
System.out.println("two");
为什么不是顺序执行?
可能的结果是 先出了one 然后 1执行了 出一个thread 然后 two thread
也可能是 先出one thread thread two
都是有可能的吧
一同探讨
{
public static void main(String[] args)
{MyThread mt1=new MyThread();
MyThread mt2=new MyThread();
mt1.start();
Thread.sleep(1000);
System.out.println("one");
mt2.start();
Thread.sleep(1000);
System.out.println("two");
}
public void run(){
System.out.println("Thread");
}}将其中的1000慢慢调小,就会发现结果不一样
如果主线程想等待线程执行结束后再继续执行后面的代码,可以用join
mt1.start();
mt1.join();
System.out.println("one");
mt2.start();
mt2.join();
System.out.println("two");
赞同!在System.out.println("one");前插入如下的for循环,调节循环次数为4次左右,可以得到多种打印结果。for(int i=0;i<4;i++){
System.out.println("---");
}具体循环次数请根据不同主机自己调节测试。