在学习线程时,遇到一个问题:
为什么注释处写在上面和删除掉会影响程序显示结果?请高手帮助回答下,先谢了。
代码如下:
Java codeclass ThreadLife
{
public static void main(String [] args)
{
ThreadTest tt=new ThreadTest();
new Thread(tt).start();
for (int i=1;i<=50;i++)
{
if(i==25)
{
tt.b=false;
}
system.out.println("main Thread");//此处为什么会影响编程结果
}
}
}class ThreadTest implements Runnable
{
boolean b=true;
public void run()
{
while (b)
{
System.out.println(Thread.currentThread().getName());
}
}
}
为什么注释处写在上面和删除掉会影响程序显示结果?请高手帮助回答下,先谢了。
代码如下:
Java codeclass ThreadLife
{
public static void main(String [] args)
{
ThreadTest tt=new ThreadTest();
new Thread(tt).start();
for (int i=1;i<=50;i++)
{
if(i==25)
{
tt.b=false;
}
system.out.println("main Thread");//此处为什么会影响编程结果
}
}
}class ThreadTest implements Runnable
{
boolean b=true;
public void run()
{
while (b)
{
System.out.println(Thread.currentThread().getName());
}
}
}
system.out.println("main Thread");//此处为什么会影响编程结果
System的S要大写!
在加上你在主线程上少执行了一句话,当然对另一个线程有影响啦^
system.out.println("main Thread");//此处为什么会影响编程结果
这里:是大写的S
无注释这句时,什么都不会打印出来;
有注释这句时,会出现主线程和ThreadTest线程轮流执行的结果(这种情况是正常的,就是想知道为什么无注释这句时,什么都不会打印出来?)
如下:
main Thread
main Thread
main Thread
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0
main Thread
我在里面让主线程,睡了一小会儿就有我想的结果了,呵if(i==25)
{
tt.b=false;
}
try
{
Thread.sleep(10);
}catch(Exception e)
{
System.out.println(e.getMessage());
}
//System.out.println("main Thread");我还想请问一下,这个问题能反应“只要主线程结束,其它线程都要结束么?”
可是我好像看到过"只要有其它线程在运行,程序就不会停止啊?"
有点糊里糊涂了,请高手帮忙。谢谢了
你加了system.out.println("main Thread");打印,延迟了程序执行时间,所以public void run()
得到执行了.你看到了打印结果
你把代码做如下修改
for (int i=1;i<=500000000;i++)
{
if(i==25000000)
{
tt.b=false;
}
// System.out.println("main Thread");//此处为什么会影响编程结果
}
就能看到打印的
Thread-0
Thread-0
Thread-0
Thread-0
Thread-0