• 多线程---模拟接力赛跑


     1 //接力赛跑的线程,实现Runnable
     2 public class MyRunnable implements Runnable{
     3     static int num = 10;
     4     private String thread;
     5     Object lock = new Object();
     6     public void run() {
     7         while(true) {
     8             synchronized (lock) {
     9                 if(num == 0) {
    10                     System.out.println("比赛结束!");
    11                     break;
    12                 }
    13                 thread = Thread.currentThread().getName();
    14                 System.out.println(thread+"拿到了接力棒!");
    15                 num--;            
    16                 for(int i =1;i<=10;i++) {
    17                     try {
    18                         Thread.sleep(10);
    19                     } catch (InterruptedException e) {
    20                         // TODO Auto-generated catch block
    21                         e.printStackTrace();
    22                     }
    23                     System.out.println(thread+"跑了"+(i*10));
    24                 }
    25                 return;
    26             }
    27         }
    28     }
    29 }
    接力赛跑的线程,实现Runnable
     1 //测试类
     2 public class Test {
     3     public static void main(String[] args) throws InterruptedException {
     4         MyRunnable m = new MyRunnable();
     5         Thread thread1 = new Thread(m,"1号选手");
     6         Thread thread2 = new Thread(m,"2号选手");
     7         Thread thread3 = new Thread(m,"3号选手");
     8         Thread thread4 = new Thread(m,"4号选手");
     9         Thread thread5 = new Thread(m,"5号选手");
    10         Thread thread6 = new Thread(m,"6号选手");
    11         Thread thread7 = new Thread(m,"7号选手");
    12         Thread thread8 = new Thread(m,"8号选手");
    13         Thread thread9 = new Thread(m,"9号选手");
    14         Thread thread10 = new Thread(m,"10号选手");
    15         thread1.start();
    16         thread2.start();
    17         thread3.start();
    18         thread4.start();
    19         thread5.start();
    20         thread6.start();
    21         thread7.start();
    22         thread8.start();
    23         thread9.start();
    24         thread10.start();
    25         
    26     }
    27 }
    测试类

    运行结果:

    问题:无法实现少于十人的接力赛跑,实现不连续出现的情况!

  • 相关阅读:
    LinuxPerformance
    MySQL事务
    vi字体太暗的配置
    几种语言的日期格式,Oracle,Java,MySQL,Python
    Oracle RAC JDBC connection string
    docker问题解决
    elasticesearch弱密码漏洞
    apt源更新
    android学习笔记二:Intent
    mars android视频学习笔记一:Activity生命周期
  • 原文地址:https://www.cnblogs.com/Dean-0/p/11305128.html
Copyright © 2020-2023  润新知