多线程:模拟多个人通过一个山洞.............

package Thread11;

public class MountTest {

public static void main(String[] args) {
// TODO 自动生成的方法存根
Mount cave = new Mount();
new Thread(cave,"李三1").start();
new Thread(cave,"李三2").start();
new Thread(cave,"李三3").start();
new Thread(cave,"李三4").start();
new Thread(cave,"李三5").start();
new Thread(cave,"李三6").start();
new Thread(cave,"李三7").start();
new Thread(cave,"李三8").start();
new Thread(cave,"李三9").start();
new Thread(cave,"李三10").start();
}
}

class Mount implements Runnable{
private Object lock=new Object();
public void run(){
synchronized(lock){
System.out.println(Thread.currentThread().getName()+"---走出山洞");
try{
Thread.sleep(2000);
}catch(InterruptedException e){
e.printStackTrace();
}
}

}
}

时间: 2024-08-30 12:34:07

多线程:模拟多个人通过一个山洞.............的相关文章

1.编写多线程应用程序,模拟多个人通过一个山洞的模拟。这个山洞每次只能通过一个人,每个人通过山洞的时间为5秒,随机生成10个人,同时准备过此山洞,显示一下每次通过山洞人的姓名。

package com.hanqi.xc; import java.util.LinkedHashSet; import java.util.Random; import java.util.Set; public class GuoShanDong implements Runnable { private static int deng=0; @Override public void run() { deng= deng+5000; try { Thread.sleep(deng); }

java多线程模拟生产者消费者问题,公司面试常常问的题。。。

package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 //Storage仓库 //批注:我把输出结果写在程序以下了,你能够看一下,事实上非常easy的,你想象一下产品从生产,到取出的一个生产线,我们定义两个线程,生产者线程,和消费者线程,一个是生产者不停的生产产品并放入数量有限的指定槽内,而消费者从指定槽依次取出产品,现实中的流水车间也相似于此. publ

使用无锁完成多线程模拟售票, 理解无锁是啥?

实现的模拟多线程实现售票是每个学习多线程的初学者必须要学会掌握的知识点, 既然掌握的它, 我们自然要举一反三 So~, 无锁版出现了 What无锁? 假如两个线程同时修改一个变量的场景下 我们需要三个值, 预期值(线程副本变量中的值), 主存值(从主存变量中的值), 新值(我们要设置的值) 如果 预期值 不等于 主存值 则忽略 新值 写入  =========> 这句话是一个原子操作, 是不可分割的(就是内存屏障), 在执行这个过程中, 是不会失去时间片的 如果 预期值 等于 主存值 则  新值

java中多线程模拟(多生产,多消费,Lock实现同步锁,替代synchronized同步代码块)

import java.util.concurrent.locks.*; class DuckMsg{ int size;//烤鸭的大小 String id;//烤鸭的厂家和标号 DuckMsg(){ } DuckMsg(int size, String id){ this.size=size; this.id=id; } public String toString(){ return id + " 大小为:" + size; } } class Duck{ private int

JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序

UDP传输 UDP有发送端和接受端,有两大类,DatagramSocket.DatagramPacket 建立发送端和接收端 建立数据包 调用Socket的接收发送方法 关闭Socket 注意:发送端和接收端是两个独立的运行程序 UDP发送端演示 DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号. public static voi

模拟spring - 动手写一个spring AOP

一.前言 AOP (Aspect Oriented Programing) - 面向切面编程,它主要用于日志记录.性能分析.安全控制.事务处理.异常处理等方面. AOP主要使用JDK的反射和动态代理,AOP代理其实是由AOP框架动态生成的一个对象,该对象可作为目标对象使用,AOP代理包含了目标对象的全部方法,但AOP代理的方法与目标对象的方法存在差异:AOP方法在特定切入点添加了增强处理,并回调了目标对象的方法. 动态代理的文章请参考:http://blog.csdn.net/zdp072/ar

使用多线程模拟一个银行叫号窗口

使用继承Thread类的方式创建线程 银行叫号部分的代码 package com.dwz.concurrency.chapter2; /** * 使用static保证号码数据共享 * 线程的创建方式:继承Thread类 */ public class TicketWindow extends Thread{ private static final int MAX = 100; //号码 private static int index = 1; private final String nam

Java多线程学习中遇到的一个有趣的问题

今天随便写了一个线程之间相互调度的程序,代码如下: class First extends Thread { public First() { start(); } synchronized public void run() { try { wait(); } catch(InterruptedException e) { e.printStackTrace(); } try { sleep(2000); } catch(InterruptedException e) { e.printSta

java多线程模拟停车系统

import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; import java.util.concurrent.Semaphore; import java.util.concurrent.SynchronousQueue; import sun.awt.geom.AreaOp.IntOp; /** * * @author