一个Thread sleep()的简单问题

Debby_Bryant 2009-09-23 06:28:57
import java.util.Date;

public class SleepThreadTest {
public static void main(String[] args) {
run1 r = new run1();
Thread t = new Thread(r);

while (true) {
t.start();
try {
t.sleep(1000);
} catch (InterruptedException e) {
return;
}
}

try {
Thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
t.interrupt();
}
}

class run1 implements Runnable {

public void run() {
System.out.println(new Date());
}

}


为什么主线程后面
try {
Thread.sleep(10000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
t.interrupt();
会报错...
...全文
231 18 打赏 收藏 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Debby_Bryant 2009-09-27
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 renpinghao 的回复:]
while (true) {
System.out.println(new Date());
try {
  Thread.sleep(1000);
} catch (InterruptedException e) {
  return;
}

}
这不是死循环吗?
[/Quote]
主线程可以Interrupted
当catch到Interrupted就会return...
damon08708 2009-09-24
  • 打赏
  • 举报
回复
while (true) {
System.out.println(new Date());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
return;
}

}
这不是死循环吗?
Debby_Bryant 2009-09-23
  • 打赏
  • 举报
回复
import java.util.Date;

public class SleepThreadTest {
public static void main(String[] args) {
run1 r = new run1();
Thread t = new Thread(r);
t.start();
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t.interrupt();
}
}

class run1 implements Runnable {

public void run() {
while (true) {
System.out.println(new Date());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
return;
}

}
}

}
dz007 2009-09-23
  • 打赏
  • 举报
回复
说错了,是放到任务里,让线程执行一秒打印一次的任务,而不是用其他线程控制打印
dz007 2009-09-23
  • 打赏
  • 举报
回复
把控制代码放到线程里,让线程自己控制输出
HelloAldis 2009-09-23
  • 打赏
  • 举报
回复
Thread.sleep()方法是静态方法
让当前执行到此的线程sleep一定时间 看看JDK就知道
Debby_Bryant 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kindazrael 的回复:]
Java code

Thread t=new Thread(c)
t.start();
sleep(10000);//睡个10st.interrupt();void run()
{while(true){
System.out.ptintln(new Date());
sleep(100)//睡个0.1s }
}
[/Quote]
sleep()方法不能这样用啊 大哥!
HelloAldis 2009-09-23
  • 打赏
  • 举报
回复


Thread t = new Thread(c)
t.start();
sleep(10000);//睡个10s
t.interrupt();

void run()
{
while(true){
System.out.ptintln(new Date());
sleep(100)//睡个0.1s
}
}
Debby_Bryant 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kindazrael 的回复:]
哥哥 怎么教你的
一个线程启动start() 线程启动了 进入运行状态 打印了一句话后线程完了 进入死亡状态
如果在调用start() 方法在启动这个进程 就会抛出 IllegalThreadException
[/Quote]
小弟真乖 帮哥把这个改改...
m_angle_m 2009-09-23
  • 打赏
  • 举报
回复
楼上正解 怎么可能多次start同一个线程
HelloAldis 2009-09-23
  • 打赏
  • 举报
回复
哥哥 怎么教你的
一个线程启动start() 线程启动了 进入运行状态 打印了一句话后线程完了 进入死亡状态
如果在调用start() 方法在启动这个进程 就会抛出 IllegalThreadException
Debby_Bryant 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lxxzhy 的回复:]
应该不是interrupt报错吧...贴一下错误.
[/Quote]
编译器自动发现错误 提示...
Debby_Bryant 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 longds7 的回复:]
    boolean key=true;
        while (key) {
            t.start();
            key=false;
            try {
                t.sleep(1000);
            } catch (InterruptedException e) {
                return;
            }
        }
[/Quote]这个改了 错误消除了 但没什么意思啊
longds7 2009-09-23
  • 打赏
  • 举报
回复
boolean key=true;
while (key) {
t.start();
key=false;
try {
t.sleep(1000);
} catch (InterruptedException e) {
return;
}
}
loveofmylife 2009-09-23
  • 打赏
  • 举报
回复
一直在while循环,后面的代码根本的抵达不到,编译器能直接发现这种错误
gesanri 2009-09-23
  • 打赏
  • 举报
回复
while (true) {
t.start();
try {
t.sleep(1000);
} catch (InterruptedException e) {
return;
}
}
你执行了这个,要么一直不抛异常,无限循环执行,要么抛出异常,直接返回,下面的语句根本没有执行的机会
lxxzhy 2009-09-23
  • 打赏
  • 举报
回复
应该不是interrupt报错吧...贴一下错误.
amdgaming 2009-09-23
  • 打赏
  • 举报
回复

因为 while (true) 是死循环 后面 代码 执行不到的。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧