java仿真软件_一个简单的Java仿真程序
這是一個簡單的仿真程序:
在這個仿真程序中,花園委員會都希望了解每天通過大門進入公園的總?cè)藬?shù).每個大門都有一個十字
轉(zhuǎn)門或某種其他形式的計數(shù)器,并且任何一個十字轉(zhuǎn)門的計數(shù)器遞增時,就表示公園中的總?cè)藬?shù)的共享
計數(shù)值也會遞增
package OrnamentalGarden;
import java.util.Random;
/**
* 這里使用單個的Count對象來跟蹤花園的參觀者的計算值,并且將其當做是Entrance類中的一個靜態(tài)域進行訪問
* @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的這段時間里,有大約一半的時間產(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仿真程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java输出孪生素数对数_为什么孪生素数
- 下一篇: java 禁止使用多线程_Java多线程