java多线程模拟停车位问题
/**
*
*/
package Synchronized; /**
* @author libin
*
*/
public class CarTest {
public static void main(String[] args) {
CarSet car1 = new CarSet();
Thread t1 = new InThread("1",car1);
Thread t2 = new InThread("2",car1);
Thread t3 = new InThread("3",car1);
Thread t4 = new OutThread("4",car1);
Thread t5 = new OutThread("5",car1);
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
} }
class InThread extends Thread //入库线程
{
String name;
CarSet car;
public InThread(){}
public InThread(String name,CarSet car)
{
super(name);
this.car = car;
}
public void run()
{
car.CarIn();
}
}
class OutThread extends Thread
{
String name;
CarSet carSet;
public OutThread(){}
public OutThread(String name,CarSet carSet)
{
super(name);
this.carSet = carSet;
}
public void run()
{
carSet.CarOut();
}
} class CarSet
{
//String carName;
private boolean[] place = new boolean[3];
public CarSet(){}
// public CarSet(String carSetName)
// {
// this.carName = carSetName;
// }
public synchronized void CarIn()
{
try
{
if(place[0]&&place[1]&&place[2])
{
System.out.println("车位已满,请等待。");
wait();
}
for(int i = 0; i < 3; i++)
{
if(place[i] == false)//车位空,可以入库
{
System.out.println(Thread.currentThread().getName()+"可以入"+i+"号库");
place[i] = true;
notifyAll();
break;
} }
}
catch(InterruptedException e)
{
e.printStackTrace();
} }
public synchronized void CarOut()
{
try
{
if(!(place[0]||place[1]||place[2]))
{
wait();
}
for(int i = 0; i < 3; i++)
{
if(place[i] == true)//车在库内,可以出库
{
System.out.println(Thread.currentThread().getName()+"可以从"+i+"号库出库");
place[i] = false;
notifyAll();
break;
}
}
}
catch(InterruptedException e)
{
e.printStackTrace();
} }
}
java多线程模拟停车位问题的更多相关文章
- java多线程模拟生产者消费者问题,公司面试常常问的题。。。
package com.cn.test3; //java多线程模拟生产者消费者问题 //ProducerConsumer是主类,Producer生产者,Consumer消费者,Product产品 // ...
- java多线程模拟停车系统
import java.util.Random; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent ...
- 使用Redis中间件解决商品秒杀活动中出现的超卖问题(使用Java多线程模拟高并发环境)
一.引入Jedis依赖 可以新建Spring或Maven工程,在pom文件中引入Jedis依赖: <dependency> <groupId>redis.clients< ...
- 用java多线程模拟数据库连接池
模拟一个ConnectionDriver,用于创建Connection package tread.demo.threadpool; import java.lang.reflect.Invocati ...
- java多线程模拟红绿灯案例
代码Lighter.java: package pack1; /** * 灯线程 * @author Administrator * */ public class Lighter extends T ...
- java多线程模拟龟兔赛跑
让乌龟和兔子在同一个赛道从1开始跑到100,看看谁更快. public class Racer implements Runnable{ private static String winner;// ...
- Java多线程-并发协作(生产者消费者模型)
对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的.就像学习每一门编程语言一样,Hello World!都是最经典的例子. 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓 ...
- Java 多线程:什么是线程安全性
线程安全性 什么是线程安全性 <Java Concurrency In Practice>一书的作者 Brian Goetz 是这样描述"线程安全"的:"当多 ...
- 2018.4.17 java多线程练习二模拟开场仪式进场
2.某公司组织年会,会议入场时有两个入口,在入场时每位员工都能获取一张双色球彩票,假设公司有100个员工,利用多线程模拟年会入场过程, 并分别统计每个入口入场的人数,以及每个员工拿到的彩票的号码.线程 ...
随机推荐
- POJ1751 Highways
题目链接 http://poj.org/problem?id=1751 题目大意:输入n:然后给你n个点的坐标(任意两点之间皆可达):输入m:接下来m行每行输入两个整数x,y表示 点x与点y 已 ...
- 前端Js传递数组至服务器端
$("#delete").click(function () { var ID = ""; var ary = []; var bb = document.ge ...
- Decimal fixed point and floating point arithmetic
decimal — Decimal fixed point and floating point arithmetic — Python 3.8.0a0 documentation https://d ...
- <2013 07 05> 804.15. 4--> TI MSP430+CC2520 调试
这一周,实际参与eCar项目的工作正式展开. 来TUM的第一个月,主要熟悉了eCar的机电结构,特别是熟悉了eCar的IT(Information Technology),包括硬件和代码. 来的时候, ...
- resetForm(name1,name2)-我的JavaScript函数库-mazey.js
重置表单输入值为原始(空)状态. 参数:name1,name2,name3...NAME属性,可以多个. function resetForm(){ for(var i = 0; i < arg ...
- 监听浏览器使用不同版本js并且处理ie兼容getElementByClassName
if(window.addEventListener){ document.write('<script src="js/jquery-2.1.4.min.js">&l ...
- python函数回顾:hex()
描述 hex() 函数用于将10进制整数转换成16进制,以字符串形式表示. 语法 hex 语法: hex(x) 参数说明: x -- 10进制整数 返回值 返回16进制数,以字符串形式表示. 实例 & ...
- Django中间件,信号,缓存
中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...
- nodejs post请求
const http = require('http'); const querystring = require('querystring'); const postData = querystri ...
- node.js及node-inspector的调试方法
1.先运行 $ node --debug-brk test.js 2.再在新的窗口运行: $ node-inspector 3.再打开Chrome浏览器输入node-inspector提示的地址,就会 ...