1 package gov.nasa.jpf.jvm; 20 21 import gov.nasa.jpf.Config; 22 import java.util.Random ; 23 24 25 28 public class RandomScheduler extends Scheduler { 29 private static Random rand = new Random (); 30 private int thread; 31 private int random; 32 33 public RandomScheduler (Config config) { 34 initialize(); 35 } 36 37 public int getRandom () { 38 return random; 39 } 40 41 public int getThread () { 42 return thread; 43 } 44 45 public void initialize () { 46 thread = 0; 47 random = -1; 48 } 49 50 public ThreadInfo locateThread (SystemState ss) { 51 int n = ss.getThreadCount(); 52 int nthreads = 0; 53 ThreadInfo[] threads = new ThreadInfo[n]; 54 int[] refs = new int[n]; 55 56 for (int i = 0; i < n; i++) { 57 ThreadInfo th = ss.getThreadInfo(i); 58 59 if (th.isRunnable()) { 60 refs[nthreads] = i; 61 threads[nthreads++] = th; 62 } 63 } 64 65 if (nthreads == 0) { 66 return null; 67 } 68 69 int r = rand.nextInt(nthreads); 70 71 thread = refs[r]; 72 73 return threads[r]; 74 } 75 76 public void next () { 77 initialize(); 78 } 79 80 public int random (int max) { 81 random = rand.nextInt(max); 82 83 return random; 84 } 85 } | Popular Tags |