A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵倩倩 中级黑马   /  2012-7-9 15:25  /  1810 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我的这段小代码只是能依次输出两个跑的距离 我想问有木有方法能让一个线程在中间随机停留一段时间再开始  
package cn.test.com;

public class GuiTuSaiPao implements Runnable {
        private String name;
        private int length = 0;

        public GuiTuSaiPao() {
        }

        public GuiTuSaiPao(String name) {
                this.name = name;
        }

        public void run() {
                while (true) {
                        // 每次停500毫秒
                        try {
                                Thread.sleep(500);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        // 向前跑十米
                        length += 10;
                        System.out.println(name + "已跑了" + length + "米.");
                        // 到达终点
                        if (length >= 100) {
                                System.out.println(name + ",已经到达终点!");
                                // 结束赛跑,break
                                break;
                        }
                }
        }

        public static void main(String[] args) {
                GuiTuSaiPao wugui = new GuiTuSaiPao("乌龟");
                GuiTuSaiPao tuzi = new GuiTuSaiPao("兔子");
                Thread thread = new Thread(wugui);
                Thread thread2 = new Thread(tuzi);
                // 启动线程
                thread.start();
                thread2.start();

        }

}

评分

参与人数 1技术分 +1 收起 理由
蒋映辉 + 1

查看全部评分

3 个回复

倒序浏览
Thread.sleep(new Random().nextInt(499)+1);
回复 使用道具 举报
本帖最后由 Forever。 于 2012-7-9 15:42 编辑

while (true) {
                        // 每次停500毫秒
                        try {
                                Thread.sleep(500);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        // 向前跑十米
                        length += 10;
                        System.out.println(name + "已跑了" + length + "米.");
                        // 到达终点
                        if (length >= 100) {
                                System.out.println(name + ",已经到达终点!");
                                // 结束赛跑,break
                                break;
                        }
                }
你这段代码不管是乌龟和兔子都是一样的啊。没有判断么?我觉得你这个可能是兔子的跑步方式吧。你可以写成这样啊。
while (true) {
                if(name.equals("兔子")){
                          // 每次停500毫秒
                        try {
                                Thread.sleep(500);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        // 向前跑十米
                        length += 10;
                        System.out.println(name + "已跑了" + length + "米.");
                        // 到达终点
                        if (length >= 100) {
                                System.out.println(name + ",已经到达终点!");
                                // 结束赛跑,break
                                break;
                        }
                        else{
                               // 每次停100毫秒
                        try {
                                Thread.sleep(100);
                        } catch (InterruptedException e) {
                                e.printStackTrace();
                        }
                        // 向前跑三米
                        length += 3
                        System.out.println(name + "已跑了" + length + "米.");
                        // 到达终点
                        if (length >= 100) {
                                System.out.println(name + ",已经到达终点!");
                                // 结束赛跑,break
                                break;
                        }

                        }
                 }         
}
这样两个有区别才有的比嘛。


然后你如果想在线程中间加随即停留就在sleep方法中写随即数即可啊。
就是
Random random1 = new Random(100);
然后用的时候random1.nextInt()。
回复 使用道具 举报
Thread.sleep(new Random().nextInt(499)+1); 这个好{:soso_e104:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马