有段程序如下:
public class ThreadDemo
{
public static void main(String[] args)
{
TestThread t=new TestTread();
new Thread(t).start();
for(int i=0;i<10;i++)
{
System.out.println("main is running!");
}
}
}class TestThread implements Runnable
{
public void run(){
for(int i=0;i<10;i++)
{
System.out.println("Thread is running!");
}
}
}
书本例题上的输出是main与Thread交替输出,在机器上实践是main输出10个之后才输出Thread。问题出在哪里?
public class ThreadDemo
{
public static void main(String[] args)
{
TestThread t=new TestTread();
new Thread(t).start();
for(int i=0;i<10;i++)
{
System.out.println("main is running!");
}
}
}class TestThread implements Runnable
{
public void run(){
for(int i=0;i<10;i++)
{
System.out.println("Thread is running!");
}
}
}
书本例题上的输出是main与Thread交替输出,在机器上实践是main输出10个之后才输出Thread。问题出在哪里?
如果想看交错效果,可以给每个执行的地方加入slepp来人为干涉CPU分配
public class ThreadDemo
{
public static void main(String[] args)
{
TestThread t=new TestTread();
new Thread(t).start();
for(int i=0;i<10;i++)
{
System.out.println("main is running!");
try {Thread.sleep(100);} cathc (Exception e) {}}
}
}class TestThread implements Runnable
{
public void run(){
for(int i=0;i<10;i++)
{
System.out.println("Thread is running!");
try {sleep(100);} cathc (Exception e) {}}
}
}