zoukankan      html  css  js  c++  java
  • 多线程---模拟接力赛跑

     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 }
    测试类

    运行结果:

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

  • 相关阅读:
    poj2115
    poj2136
    软件的架构与设计模式之模式的种类
    SOA: My Understanding (转载未来技术方向)
    深度管理Remote Objects的生存期 (转载)
    SmartClient(智能客户端) 转载
    Windows Communication Foundation入门(Part One)
    使用.NET Remoting开发分布式应用——基于租约的生存期(转载)
    软件设计模式C#
    MarshalByRefObjects远程对象及其调用方法
  • 原文地址:https://www.cnblogs.com/Dean-0/p/11305128.html
Copyright © 2011-2022 走看看