/** * Generic example of master/worker program. * * "Tasks" just consist of sleeping for a specified time; times to wait are * generatedly randomly from 1 to a specified maximum. * * Command-line arguments: total tasks, maximum task time, seed, * (optional) "--verbose" for verbose output * * Sequential version. */ package csci3366.sample.masterworker.seq; import java.util.List; import csci3366.sample.masterworker.FakeTasks; public class MasterWorkerSeq { /* variables/constants */ /** * Main method. */ public static void main(String[] args) { String usageMessage = "parameters: numTasks maxTaskTime seed [--verbose]"; int numTasks = 0; int maxTaskTime = 0; int seed = 0; boolean verbose = false; /* process command-line arguments */ if (args.length < 3) { System.err.println(usageMessage); System.exit(1); } try { numTasks = Integer.parseInt(args[0]); maxTaskTime = Integer.parseInt(args[1]); seed = Integer.parseInt(args[2]); } catch (NumberFormatException e) { System.err.println(usageMessage); System.exit(1); } if (args.length > 3) { if (args[3].equals("--verbose")) verbose = true; else { System.err.println(usageMessage); System.exit(1); } } /* do processing */ int totalTaskTime = 0; /* start timing */ long startTime = System.currentTimeMillis(); /* build list of tasks */ List taskList = FakeTasks.randomTasks(numTasks, maxTaskTime, seed); /* process tasks */ for (FakeTasks.Task t : taskList) { totalTaskTime += t.time; FakeTasks.TaskResult tr = t.execute(); if (verbose) { System.out.printf("%s\n", FakeTasks.toString(t, tr)); } } /* end timing and print result */ long endTime = System.currentTimeMillis(); System.out.printf("\nsequential version\n"); System.out.printf("number of tasks = %d\n", numTasks); System.out.printf("max task time = %d\n", maxTaskTime); System.out.printf("total task time = %d\n", totalTaskTime); System.out.printf("running time = %g\n", (double) (endTime - startTime) / 1000); } }