Topic: 一个线程的sleep问题 |
Print this page |
1.一个线程的sleep问题 | Copy to clipboard |
Posted by: sunxiaoming Posted on: 2006-11-26 10:00 请大家帮我解释一下,我有点想不通,子线程调用sleep 为什么主线程却暂停了2秒后才执行?(是因为子线程休眠的时候,整个程序处于挂起状态么?为什么?) (我想实现的是:将子线程设置成后台线程->启动->后休眠->然后主线程结束->程序退出!我得到的结果却是:程序启动后马上输出了子线程的打印(这里我想是因为子线程代码简单,执行的时间非常的段所以先输出了子线程的打印),然后等2秒后才输出主线程的打印!(这里想不通) public class SleepTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ThreadTest tt = new ThreadTest(); Thread pp = new Thread(tt); pp.setDaemon(true); pp.start(); try { pp.sleep(2000); } catch (Exception e) { e.printStackTrace(); } System.out.print(tt.i); } } class ThreadTest implements Runnable { static int i; public void run() { // TODO Auto-generated method stub i++; System.out.println("test sub running!!"); } } |
2.Re:一个线程的sleep问题 [Re: sunxiaoming] | Copy to clipboard |
Posted by: cxp108 Posted on: 2006-11-27 09:42 sleep这个方法,一般来说我们都以Thread.sleep(1000)这样的方式来调用,来控制本线程休眠,很少以LZ这个方式调用。 sleep(Long time)这个方法是会其原理有点类似于阻塞,当你调用这个方法时pp线程进入休眠,但与此同时主线程也在等待sleep方法返回,因此看上去程序好像挂起了。 以上纯属个人观点,仅供参考。 |
3.Re:一个线程的sleep问题 [Re: sunxiaoming] | Copy to clipboard |
Posted by: sunxiaoming Posted on: 2006-11-27 23:36 其实我想问的也正是在其他线程调用Sleep的时候为什么主线程会等待他?而不是继续执行?"要是那样多线程不是变成单线程的顺序执行了么?"就是这里有点想不通! 还是谢谢楼上的大侠! 我是个菜鸟问题多 呵呵 |
4.Re:一个线程的sleep问题 [Re: sunxiaoming] | Copy to clipboard |
Posted by: cxp108 Posted on: 2006-11-28 10:35 其实这个程序本身就存在着思路的问题(当然为了测试一个API编写的另当别论) sleep()这个方法一般来说是留给线程自己调用的,也就是说当某个工作条件不暂时不满足时,自己要求自己进入休眠。sleep()方法很少提供给其他线程调用。 从使用的角度来说,开设一个线程就是为了让它自己工作,而不是由别人控制它工作。 |
5.Re:一个线程的sleep问题 [Re: sunxiaoming] | Copy to clipboard |
Posted by: sunxiaoming Posted on: 2006-11-29 10:01 哦,是这样啊! 现在明白了!谢谢 楼上的大侠 呵呵 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |