为了方便理解,自己敲了一边代码,记录 b站 狂神笔记。
/*
多线程
方法1:继承Thread类,重写run()方法,调用start方法
方法2.实现Runnable接口,重写run()方法,new一个Thread方法,放进Runnable的对象,调用start方法
一般推荐第二种,能通过继承实现多个对象的同步
*/
//龟兔赛跑小案例
public class ThreadTest implements Runnable{
String winner;
@Override
public void run() {
for (int i = 0; i <=100; i++) {
//为了尊重历史,给兔子限制速度,每十步一假寐
if(Thread.currentThread().getName().equals("兔子")&& i%10==0){
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
boolean flag=GameOver(i);
if (flag){
break;
}
System.out.println(Thread.currentThread().getName()+"跑了"+i+"步");
}
}
public static void main(String[] args) {
ThreadTest test=new ThreadTest();
new Thread(test,"兔子").start();
new Thread(test,"乌龟").start();
}
public boolean GameOver(int step){
if (winner!=null){
return true;
}
if (step==100)
{
winner=Thread.currentThread().getName();
System.out.println("winner is"+winner);
return true;
}
return false;
}
}

这这这…我电脑有点快,已经让兔子睡觉最低了,,这乌龟跑完了,还睡呢,,这乌龟本身就快。。。。
本文通过实现多线程的龟兔赛跑案例,探讨了两种创建线程的方法:继承Thread类和实现Runnable接口。文章强调了实现Runnable接口的推荐性,因为它允许实现多个对象同步。在案例中,尽管已将兔子的速度限制到最低,但乌龟仍然先完成了比赛,展示了线程执行的不确定性。
231

被折叠的 条评论
为什么被折叠?



