黑马程序员技术交流社区
标题:
多线程问题--main线程结束,从线程怎么还在执行
[打印本页]
作者:
endian11
时间:
2014-6-7 19:27
标题:
多线程问题--main线程结束,从线程怎么还在执行
多线程中,main线程结束之后,从线程怎么还在执行啊,请看以下代码:
class JoinThread extends Thread
{
private int i;
public void run()
{
try
{
sleep(10);
for (; i < 1000 ; i++ )
{
System.out.println(getName() + " " + i);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
public static void main(String[] args)
{
JoinThread jt = new JoinThread();
jt.start();
System.out.println("Hello World!");
}
}
执行结果如下:
Hello World!
Thread-0 0
Thread-0 1
Thread-0 2
Thread-0 3
Thread-0 4
Thread-0 5
Thread-0 6
Thread-0 7
Thread-0 8
Thread-0 9
Thread-0 10
。。。。
为什么主线程都打印hello world结束了,Thread0还在执行,而且thread0还休眠了10s让出了处理器
作者:
superob123
时间:
2014-6-7 19:37
线程分守护线程和用户线程,线程默认为用户线程,线程是分开的,相互不影响,要不也不叫多线程
作者:
李小然
时间:
2014-6-7 19:39
在你的代码中,有两个线程:主线程和jt线程
这两个线程都属于前台线程,只有当两个线程都结束后,程序才会结束。
不存在main线程完成,jt就要强制退出的结果。
可以使用守护线程,来实现你想要的效果。
将jt设置为守护线程,当前台线程(main线程)结束后,守护线程强制结束。
class JoinThread extends Thread
{
private int i;
public void run()
{
try
{
//这里改为100,可以让jt一个都不能输出
sleep(
100
);
for (; i < 1000 ; i++ )
{
System.out.println(getName() + " " + i);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}
}
public static void main(String[] args)
{
JoinThread jt = new JoinThread();
//守护线程必须在线程开启之前设置。
jt.setDaemon(true);
jt.start();
System.out.println("Hello World!");
}
}
作者:
felixzr
时间:
2014-6-7 20:38
还没学到多线程,唉
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2