初学者关于线程的小问题

yangyang46610 2003-05-16 09:47:08
偶遇到下面的一段代码,讲解有关线程的问题,调试后结果正常,就是想问问为什么执行后Thread1,Thread2,Thread3第一次是同时出现。按本人的理解,生成SimpleThreadDemo类时没有调用println方法,所以从程序执行开始就应该按照delay的时间显示Thread1,Thread2,Thread3。代码如下:
public class SimpleThreadDemo extends Thread
{
private String threadName;
private long delay;
public static void main(String[] args)
{
SimpleThreadDemo thread1=new SimpleThreadDemo("Thread1",1000);
SimpleThreadDemo thread2=new SimpleThreadDemo("Thread2",4000);
SimpleThreadDemo thread3=new SimpleThreadDemo("Thread3",8000);
System.out.println("Press\"Enter\"to stop...");
thread1.start();
thread2.start();
thread3.start();
try
{
System.in.read();
}
catch(Exception e)
{
}
System.out.println("end of main()");
}
public SimpleThreadDemo(String threadName,long delay)
{
this.threadName=threadName;
this.delay=delay;
setDaemon(true);
}
public void run()
{
try
{
while(true)
{
System.out.println(threadName);
sleep(delay);
}
}
catch(InterruptedException e)
{
System.out.println(threadName+"got interrupted");
}
}
}
困惑中,请指点!
...全文
19 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
teaky2002 2003-05-16
  • 打赏
  • 举报
回复
这个就是线程的cpu分用的结果了。
thread1.start();在这句执行完以后,就产生了一个子线程,这个子线程跟主线程是同时在前进的。主线程执行生成第二个子线程的语句的时候,第一个子线程休眠了。所以会打印第二个子线程的情况。。以下同道理。

62,614

社区成员

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

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