1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/privilegedcreator/src/org/apidesign/privileged/api/Executors.java Mon May 25 18:27:02 2009 +0200
1.3 @@ -0,0 +1,60 @@
1.4 +
1.5 +package org.apidesign.privileged.api;
1.6 +
1.7 +import java.util.concurrent.Executor;
1.8 +
1.9 +/**
1.10 + *
1.11 + * @author Jaroslav Tulach <jtulach@netbeans.org>
1.12 + */
1.13 +public final class Executors {
1.14 + /** let's prefer factory methods */
1.15 + private Executors() {
1.16 + }
1.17 +
1.18 +
1.19 + public static Executor create() {
1.20 + return new Simple();
1.21 + }
1.22 +
1.23 + public static Executor create(boolean fair) {
1.24 + Configuration conf = new Configuration();
1.25 + conf.setFair(fair);
1.26 + return new Fair(conf);
1.27 + }
1.28 +
1.29 + // BEGIN: design.less.privileged
1.30 + public static Executor create(Configuration config) {
1.31 + return new Fair(config);
1.32 + }
1.33 +
1.34 + public static final class Configuration {
1.35 + boolean fair;
1.36 + int maxWaiters = -1;
1.37 +
1.38 + public void setFair(boolean fair) {
1.39 + this.fair = fair;
1.40 + }
1.41 + public void setMaxWaiters(int max) {
1.42 + this.maxWaiters = max;
1.43 + }
1.44 + }
1.45 + // END: design.less.privileged
1.46 +
1.47 + private static final class Simple implements Executor {
1.48 + public synchronized void execute(Runnable command) {
1.49 + command.run();
1.50 + }
1.51 + }
1.52 + private static final class Fair implements Executor {
1.53 + private final Configuration conf;
1.54 +
1.55 + public Fair(Configuration conf) {
1.56 + this.conf = conf;
1.57 + }
1.58 +
1.59 + public void execute(Runnable command) {
1.60 + // TBD
1.61 + }
1.62 + }
1.63 +}