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

  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
999hits
Rank: 1
等 级:新手上路
威 望:1
帖 子:227
专家分:0
注 册:2005-10-2
收藏
得分:0 
因为你是顺序执行的,而你产生的随机时间,不过是两个顺序执行的命令之间的睡眠时间罢了

J3D的摸瞎人
2006-10-21 09:30
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
999hits
Rank: 1
等 级:新手上路
威 望:1
帖 子:227
专家分:0
注 册:2005-10-2
收藏
得分:0 
不好意思,我没有好好看你的程序,你的程序应该没有问题,我把你的程序看成了一个线程的两次运行不过你的程序汉字的空格实在是太多了,导致了我100个错误.
这是我两次运行的结果:
0 First
0 Second
1 Second
1 First
2 Second
2 First
3 First
4 First
5 First
3 Second
6 First
4 Second
7 First
5 Second
6 Second
8 First
7 Second
9 First
8 Second
9 Second
DONE! First
DONE! Second
Press any key to continue...

0 First
0 Second
1 First
2 First
3 First
1 Second
4 First
5 First
2 Second
6 First
3 Second
7 First
4 Second
5 Second
8 First
9 First
6 Second
DONE! First
7 Second
8 Second
9 Second
DONE! Second
Press any key to continue...

J3D的摸瞎人
2006-10-21 12:06
exit
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2006-10-18
收藏
得分:0 

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

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



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

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