大家好,第一次用这个,希望会有收获??
现在我有这个一个问题:
线程方面的:代码如下:
public void run(){
while(true){
try {
                                test();//执行的方法
   sleep(1000*30);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
我想问的是如果30秒内test()方法没有执行完,那样线程会怎么样呢

解决方案 »

  1.   

    不太明白你的问题
    个人理解test方法执行完之后,才执行sleep方法,sleep不会在test之前执行。
      

  2.   

    test()没执行完毕后面的sleep(1000*30)是不会执行的,直到test()执行完毕,线程才会沉睡。
      

  3.   

    希望有知道的大侠帮忙啊,
    这个问题是到底test()方法执行完后,执行sleep();
    还是休眠的时间一到,线程就进入休眠状态呢
    还有当线程休眠时,test()怎么办
      

  4.   

    public void run(){ 
    while(true){ //true表示这是个无限的循环
    try { 
      test();//执行的方法 
      //代码是由上往下执行的,test还没完成,怎么可能执行到sleep?
      //如果没有异常,就会进入sleep
       sleep(1000*30); 
      //这里会休眠30秒
    } catch (InterruptedException e) { 
    e.printStackTrace(); 



    你这里只有一个 sleep(1000*30); 不是一个timetask,没有休眠时间一到的概念,只有当执行到了sleep,才会休眠,你把sleep看成一个普通方法,就可以了,只不过这个方法要执行30秒才会结束。
    还有当线程休眠时,test()怎么办。。饿。。这个,你管他怎么办啊。你睡觉还非得担心着鞋子啊?明天起来再穿不就行了啊。
      

  5.   

    你这是一个线程,代码肯定是一行一行执行的。只有执行完test后才可能执行sleep。
    计时器情况则不同。
      

  6.   

    sleep(1000*30); 
     让这个线程休息30秒  应该不会抛异常
      

  7.   

    test不执行完,sleep不会被执行,除非test方法内新开了一个Thread
      

  8.   

    谢谢你们的回复,我的分数太少了,没有办法给每一个人分,我觉得5楼的说的很对,是我对sleep这个方法理解不深,谢谢大家!