欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java多线程synchronized同步方法示例

程序员文章站 2022-05-26 21:35:46
案例:请按要求编写多线程应用程序,模拟多个人通过一个山洞: ​ 1、这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒; ​ 2、随机生成10个人,同时准备过此山洞 ​ 3、定义一个变量用于记录通过隧道的人数 ​ 4、显示每次通过山洞人的姓名,和通过顺序; public class TestTu ......

案例:请按要求编写多线程应用程序,模拟多个人通过一个山洞:

​ 1、这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒;

​ 2、随机生成10个人,同时准备过此山洞

​ 3、定义一个变量用于记录通过隧道的人数

​ 4、显示每次通过山洞人的姓名,和通过顺序;

public class testtunnel {
  public static void main(string[] args) {
    runnable runnable = new tunnel();
    thread thread = null;
    for (int i = 0; i < 10; i++) {
      thread = new thread(runnable, "线程"+ i);
      thread.start();
    }
  }
}

public class tunnel implements runnable{
  private static int num = 0;

  @override
  public void run() {
    taketunnel();

  }

  public synchronized void taketunnel() {
    try {
      system.out.println(thread.currentthread().getname() + "开始通过隧道");
      thread.sleep(5000);
      num ++;
      system.out.println(thread.currentthread().getname() + "第" + num + "个通过隧道");
    } catch (interruptedexception e) {
      e.printstacktrace();
    }
  }
}