java仿真软件_一个简单的Java仿真程序
這是一個(gè)簡(jiǎn)單的仿真程序:
在這個(gè)仿真程序中,花園委員會(huì)都希望了解每天通過(guò)大門進(jìn)入公園的總?cè)藬?shù).每個(gè)大門都有一個(gè)十字
轉(zhuǎn)門或某種其他形式的計(jì)數(shù)器,并且任何一個(gè)十字轉(zhuǎn)門的計(jì)數(shù)器遞增時(shí),就表示公園中的總?cè)藬?shù)的共享
計(jì)數(shù)值也會(huì)遞增
package OrnamentalGarden;
import java.util.Random;
/**
* 這里使用單個(gè)的Count對(duì)象來(lái)跟蹤花園的參觀者的計(jì)算值,并且將其當(dāng)做是Entrance類中的一個(gè)靜態(tài)域進(jìn)行訪問(wèn)
* @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的對(duì)象,目的是把從count讀取到temp中,到遞增,temp并把
Thread.yield(); //其存儲(chǔ)回count的這段時(shí)間里,有大約一半的時(shí)間產(chǎn)生讓步.
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
總結(jié)
以上是生活随笔為你收集整理的java仿真软件_一个简单的Java仿真程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java输出孪生素数对数_为什么孪生素数
- 下一篇: java 禁止使用多线程_Java多线程