当前位置:   article > 正文

java多线程编程--模拟龟兔赛跑过程_编写一个java程序,使用接口实现动物跑的程序。

编写一个java程序,使用接口实现动物跑的程序。

 

刚开始学多线程编程,课上也没认真听,课下去网上找了PPT,又认真的学了一遍。

问题:

  1. 编写龟兔赛跑多线程程序,设赛跑长度为100米,每跑完10米输出一次结果。
  2. 采用实现Runnable接口的方法编写龟兔赛跑多线程程序,功能与1完全一样。
  3. 改进1的龟兔赛跑程序,通过改变优先级,并减掉休眠时间,使得乌龟以迅雷不及掩耳的速度跑完100米。
  4. 编写兔子休眠后被乌龟中断(吵醒)的多线程程序。

 

问题①

Animal 类:

  1. public class Animal extends Thread{
  2. public Animal(String name){
  3. super(name);
  4. }
  5. public void run(){
  6. for(int i=0;i<=100;i+=10){
  7. if(this.getName().equals("乌龟"))
  8. System.out.println("乌龟跑了 "+ i + " 米");
  9. else
  10. System.out.println("兔子跑了 "+ i + " 米");
  11. }
  12. try{
  13. Thread.sleep((long)(Math.random()*1000));
  14. }
  15. catch(InterruptedException e){
  16. e.printStackTrace();
  17. }
  18. }
  19. }

测试类:

  1. public class Quetion1 {
  2. public static void main(String[] args) {
  3. Animal rabbit = new Animal("兔子");
  4. Animal tortoise = new Animal("乌龟");
  5. rabbit.start();
  6. tortoise.start();
  7. }
  8. }

 

问题②

Animal 类:

  1. public class Animal implements Runnable{
  2. private String name;
  3. public Animal(String name){
  4. this.name=name;
  5. }
  6. public String getName(){
  7. return this.name;
  8. }
  9. public void run(){
  10. for(int i=0;i<=100;i+=10){
  11. if(this.getName().equals("乌龟"))
  12. System.out.println("乌龟跑了 "+ i + " 米");
  13. else
  14. System.out.println("兔子跑了 "+ i + " 米");
  15. }
  16. try{
  17. Thread.sleep((long)(Math.random()*1000));
  18. }
  19. catch(InterruptedException e){
  20. e.printStackTrace();
  21. }
  22. }
  23. }

测试类:

  1. public class Quetion2 {
  2. public static void main(String[] args) {
  3. Animal rabbit = new Animal("兔子");
  4. Animal tortoise = new Animal("乌龟");
  5. Thread t1 = new Thread(rabbit);
  6. Thread t2 = new Thread(tortoise);
  7. t1.start();
  8. t2.start();
  9. }
  10. }

 

问题③

Animal 类:

  1. public class Animal extends Thread{
  2. public Animal(String name) {
  3. super(name);
  4. }
  5. public void run() {
  6. for(int i=0;i<=100;i+=10) {
  7. if(this.getName().equals("乌龟"))
  8. System.out.println("乌龟跑了 " + i + "米");
  9. else
  10. System.out.println("兔子跑了 " + i + "米");
  11. }
  12. }
  13. }

测试类:

  1. public class Question3 {
  2. public static void main(String[] args) {
  3. Animal rabbit = new Animal("兔子");
  4. Animal tortoise = new Animal("乌龟");
  5. rabbit.setPriority(1);
  6. tortoise.setPriority(10);
  7. rabbit.start();
  8. tortoise.start();
  9. }
  10. }

 

问题④

Animal 类:

  1. public class Animal implements Runnable{
  2. Thread rabbit,tortoise;
  3. public Animal() {
  4. rabbit = new Thread(this,"兔子");
  5. tortoise = new Thread(this,"乌龟");
  6. }
  7. public void run() {
  8. if(Thread.currentThread() == tortoise) {
  9. System.out.println("此时兔子在休眠,被乌龟吵醒。乌龟说:该你去跑步了!");
  10. rabbit.interrupt();
  11. System.out.println("乌龟继续跑步...");
  12. }
  13. else {
  14. try{
  15. System.out.println("兔子正在休眠...乌龟正在跑步");
  16. rabbit.sleep(1000*60);
  17. }
  18. catch(InterruptedException e) {
  19. System.out.println("兔子被叫醒");
  20. System.out.println("兔子开始跑步");
  21. }
  22. }
  23. }
  24. }

测试类:

  1. public class Question4 {
  2. public static void main(String[] args) {
  3. Animal animal = new Animal();
  4. System.out.println("开始状态:");
  5. System.out.println("兔子的线程状态: " + animal.rabbit.getState());
  6. System.out.println("乌龟的线程状态: " + animal.tortoise.getState());
  7. System.out.println("比赛开始:");
  8. animal.rabbit.start();
  9. animal.tortoise.start();
  10. System.out.println("兔子的线程状态: " + animal.rabbit.getState());
  11. System.out.println("乌龟的线程状态: " + animal.tortoise.getState());
  12. System.out.println("当前活动总线程数: " + Thread.activeCount());
  13. /*这里输出总线程数位3,因为除了乌龟和兔子还有一个主线程*/
  14. }
  15. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/64422
推荐阅读
相关标签
  

闽ICP备14008679号