黑马程序员技术交流社区
标题: 龟兔赛跑 问题 [打印本页]
作者: 赵倩倩 时间: 2012-7-9 15:25
标题: 龟兔赛跑 问题
我的这段小代码只是能依次输出两个跑的距离 我想问有木有方法能让一个线程在中间随机停留一段时间再开始
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();
}
}
作者: 黑马罗坚 时间: 2012-7-9 15:29
Thread.sleep(new Random().nextInt(499)+1);
作者: Forever。 时间: 2012-7-9 15:36
本帖最后由 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()。
作者: 山水游客 时间: 2012-7-9 17:12
Thread.sleep(new Random().nextInt(499)+1); 这个好{:soso_e104:}
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |