线程为何没有交替执行
定义了两个线程:
class Number1 extends Thread{
public void run()
{
for(int i=0;i <10;i++)
{
System.out.println( "num1 ");
}
}
}
class Number2 extends Thread{
public void run()
{
for(int i=0;i <10;i++)
{
System.out.println( "num2 ");
}
}
}
分别启动后:
t1.start();
t2.start();
结果总是:
num1
num1
num1
num1
num1
num1
num1
num1
num1
num1
num2
num2
num2
num2
num2
num2
num2
num2
num2
num2
理论上,应该部分交替执行啊?
------解决方案--------------------FOR到100
------解决方案--------------------交替执行倒不会,理由有几点:
1. for循环太简单了,cpu很容易便处理完输出。
2. 你没有任何线程调度的工作,比如每个线程sleep一下。
不过多运行几次,结果到可能不同,但绝对不会出现一行num1与num2交替的情况。
------解决方案--------------------你的计算机太快了,用个速度慢点的计算机吧.哈哈,开个玩笑!
楼上说的很对,给没个进程家个sleep语句吧.问题就解决了.
------解决方案--------------------计算机的性能是很高地,这么点循环,你第2个还没起来,第一个已经执行完了
------解决方案--------------------楼上全对~ 顶起
------解决方案--------------------Lisliefor() : 你没有任何线程调度的工作,比如每个线程sleep一下
这个正解~!
------解决方案--------------------要sleep,让CPU把时间片切换出去,sleep(0)就可以
------解决方案--------------------把for循环全换成while(true)
------解决方案--------------------class Number1 extends Thread
{
public void run()
{
for (int i = 0; i < 10; i++)
{
System.out.println( "num1 ");
try
{
sleep(5);
}
catch (Exception e)
{
}
}
}
}
class Number2 extends Thread
{
public void run()
{
for (int i = 0; i < 10; i++)
{
System.out.println( "num2 ");
try
{
sleep(5);
}
catch (Exception e)
{
}
}
}
}
public class MyThread
{
/**
* @param args
*/
public static void main(String[] args) throws Exception
{
Thread t1 = new Number1();
Thread t2 = new Number2();
t1.start();
t2.start();
while (true)
Thread.sleep(2000);
}
}
改成这样就行了
------解决方案--------------------