simproc.java
来自「本程序是国外经典的操作系统调度试验」· Java 代码 · 共 58 行
JAVA
58 行
import java.util.Random ;class SimProc extends Thread { private Scheduler mySched ; private int count ; private static Random threadSeed = new Random() ; private static long getSeed() { return 1 + threadSeed.nextLong() ; } public SimProc(Scheduler sch, String name, int i) { super(name) ; mySched = sch ; count = i ; start() ; } public int getCount() { return count ; } private int collatz(int i) { int ans = 0 ; while (i != 1) { if (i <= 0) return -1 ; // numbers get too big! ans++ ; if (i % 2 == 0) i /= 2 ; else i = i*3 + 1 ; } return ans ; } private void addToReadyQueue() { mySched.addProcess(this) ; } private void removeFromReadyQueue() { mySched.removeProcess(this) ; mySched.endSlice(this) ; // want something else to run! } public void run() { addToReadyQueue() ; Random myrand = new Random(getSeed()) ; while(count > 0) { mySched.endSlice(this) ; int k = Math.abs(myrand.nextInt()) ; int ans = collatz(k) ; if (ans > 0) count-- ; System.out.println("This is " + getName() + " - Collatz of " + k + " is " + ans) ; } removeFromReadyQueue() ; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?