java多线程synchronized同步方法示例
案例:请按要求编写多线程应用程序,模拟多个人通过一个山洞:
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();
}
}
}