这是一个简单的仿真程序:

在这个仿真程序中,花园委员会都希望了解每天通过大门进入公园的总人数.每个大门都有一个十字

转门或某种其他形式的计数器,并且任何一个十字转门的计数器递增时,就表示公园中的总人数的共享

计数值也会递增

package OrnamentalGarden;

import java.util.Random;

/**

* 这里使用单个的Count对象来跟踪花园的参观者的计算值,并且将其当做是Entrance类中的一个静态域进行访问

* @author 泉

*

*/

public class Count {

private int count = 0;

private Random rand = new Random(47);

public synchronized int increment() {

int temp = count;

if(rand.nextBoolean()) //这里使用了Random的对象,目的是把从count读取到temp中,到递增,temp并把

Thread.yield(); //其存储回count的这段时间里,有大约一半的时间产生让步.

return (count = ++ temp);

}

public synchronized int value() {

return count++;

}

}

----------------------------------------------------------

package OrnamentalGarden;

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.TimeUnit;

public class Entrance implements Runnable {

private static Count count = new Count();

private static List entrances = new ArrayList();

private int number = 0;

private final int id;

private static volatile boolean canceled = false;

public Entrance(int id) {

this.id = id;

entrances.add(this);

}

public static void cancel() {

canceled = true;

}

public void run() {

while(!canceled) {

//同步控制块

synchronized (this) {

++ number;

}

System.out.println(this + "Total: "+count.increment());

try {

TimeUnit.MICROSECONDS.sleep(100);

}catch(InterruptedException e) {

System.out.println("sleep interrupted !! ");

}

}

System.out.println("Stopping "+this);

}

public synchronized int getValue() {

return number;

}

public static int getTotalCount() {

return count.value();

}

public static int sumEntrances() {

int sum = 0;

for(En

java仿真软件_一个简单的Java仿真程序相关推荐

  1. java 序列化 例子_一个简单的Java序列化的例子

    简单来说序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对 ...

  2. java 语言 写字板_一个简单的java语言写字板.docx

    一个简单的java语言写字板.docx 一个简单的JAVA语言写字板一.需求分析1.需求分析:现在网络上各种文档编辑器数不胜数.功能也是应有尽有,有能改变字体的,有可以改变字体颜色的,但是,这些软件有 ...

  3. java单机应用程序_一个简单的java桌面应用:单机版IFTTT

    1.项目背景: ifttt是"if this then that"的缩写,事实上是让你的网络行为能够引发连锁反应.让你使用更为方便.ifttt旨在帮助人们利用各网站的开放API,将 ...

  4. 用java建立一个学生查询系统_一个简单的java学生寝室查询系统

    本文实例为大家分享了java学生寝室查询系统的具体代码,供大家参考,具体内容如下 前端部分: index.html ahpu freshman dormitory inquiry html,body{ ...

  5. 用vb思设计Java编译器_一个简单的VB-VC编译器 - 程序设计(Programming)版 - 北大未名BBS...

    发信人: phoenix (凤凰), 信区: VisualBasic 标  题: 一个简单的VB-VC编译器 发信站: PKU BBS (Thu Jan  6 14:05:52 2000), 转信 V ...

  6. java年龄计算_一个简单的java年龄计算器

    制作一个如下图年龄计算器 根据题目,我做了一个由Calendar类以及年月日各相减得到的年龄,当然正确的方法不止一个,以下为我的源代码和结果截图: package com.Date; import j ...

  7. java frame paint_一个简单的java frame画图(paint)问题

    packagedrawstring;//继承frame来画字符串.importjava.awt.Button;importjava.awt.Color;importjava.awt.FlowLayou ...

  8. java liferay,用一个简单的Java code获取当前用户的Liferay

    I'm working with : Liferay 6.0.6 with JBoss 5.1 and Struts2. My question is, how to get the current ...

  9. idea建立一个java工程_IntelliJ IDEA(三、各种工程的创建 -- 之一 -- 创建一个简单的Java工程)...

    一.创建一个简单的Java工程:HelloWorld 1. Eclipse的第一步是选择工作空间,然后创建项目: IDEA不同(没有工作空间的概念),第一步就直接创建具体的项目,项目创建过程中会选择在 ...

最新文章

  1. 如何直接从GitHub安装npm软件包?
  2. Cmake中的find_package功能
  3. 图像处理--图像上采样和下采样
  4. JVM(三)对象的生死判定和算法详解
  5. java mybtis关联查询,7.MyBatis 关联查询(一对一)
  6. 2005.2.21 至 2005.8.8
  7. pytorch ResNet结构代码实现
  8. MyBatis 持久化框架快速使用入门(Xml配置版)
  9. TPC-H介绍及实战总结
  10. modelica语言学习心得
  11. VMware16安装win7 x64 虚拟机
  12. python问题:IndentationError:expected an indented block错误
  13. win10c盘扩容_【网赚教程】2020最新百度网盘扩容技术,适合做虚拟资源项目和业务!...
  14. [BZOJ1864][CODEVS2462]三色二叉树
  15. android room 分页,Android官方ORM数据库Room技术解决方案简介(一)
  16. 洛谷P1125笨小猴C语言
  17. Weight the Tree CodeForces - 1646D
  18. 嵌入式RTOS的 任务栈 和 系统栈
  19. linux怎么发现和处理僵尸进程?
  20. Unity丛林战争学习02_TCP_解决分包和黏包的问题

热门文章

  1. hdu1526 二分匹配+ floyd
  2. 【数字信号处理】相关函数应用 ( 高斯白噪声 的 自相关函数 分析 )
  3. 【Flutter】开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )
  4. 【Android 安装包优化】WebP 图片转换 ( 使用 iSparta 转换 WebP 图片格式 | Google 提供的 libwebp 库 )
  5. 【C++ 语言】智能指针 引入 ( 内存泄漏 | 智能指针简介 | 简单示例 )
  6. 【Android 应用开发】Paint 滤镜原理 之 图像结构 ( 图片文件二进制分析 | PNG文件结构 | 数据块结构 | IHDR 数据块详解 )
  7. [Spring cloud 一步步实现广告系统] 17. 根据流量类型查询广告
  8. hibernate操作mysql中文乱码
  9. #在android studio中维护日程管理系统
  10. Android LayoutInflater详解(转)