| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 543 人关注过本帖
标题:线程问题
取消只看楼主 加入收藏
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
 问题点数:0 回复次数:3 
线程问题

  class SimpleThread extends Thread {
  public SimpleThread(String str) {
   super(str); //调用其父类的构造方法
  }
  public void run() { //重写run方法
   for (int i = 0; i < 10; i++) {
    System.out.println(i + " " + getName());
             //打印次数和线程的名字
    try {
      sleep((int)(Math.random() * 1000));
             //线程睡眠,把控制权交出去
    } catch (InterruptedException e) {}
  }

     System.out.println("DONE! " + getName());
             //线程执行结束
    }
  }
  public class TwoThreadsTest {
   public static void main (String args[]) {
    new SimpleThread("First").start();
             //第一个线程的名字为First
    new SimpleThread("Second").start();
             //第二个线程的名字为Second
}
}

   运行结果:
    0 First
    0 Second
    1 Second
    1 First
    2 First
    2 Second
    3 Second
    3 First
    4 First
    4 Second
    5 First
    5 Second
    6 Second
    6 First
    7 First
    7 Second
    8 Second
    9 Second
    8 First
    DONE! Second
    9 First
    DONE! First
----------------------------------------------------

既然是sleep((int)(Math.random() * 1000));随机产生睡眠时间,那么为什么线程1和2会以固定顺序输出呢?????

搜索更多相关主题的帖子: 线程 str int public run 
2006-10-21 01:17
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 
能说清楚点吗,多线程不是同时进行吗,当first和Second执行完后,first随即获取的数如果是0 而second获取的是1的话
不就应该是first在前 second在后吗
2006-10-21 11:40
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 
还是说这里不是线程而是两个进程?
2006-10-21 11:41
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 

谢谢了哈 我是因为在网吧不能运行java程序
这段代码是 这网站上首业的程序,因为我观点不同,而又不敢轻易怀疑程序的正确性,所以就发问了
看来是网站上写错了

2006-10-21 12:32
快速回复:线程问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029728 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved