samples/privilegedcreator/src/org/apidesign/privileged/api/Executors.java
author Jaroslav Tulach <jtulach@netbeans.org>
Mon, 25 May 2009 18:27:02 +0200
changeset 330 be82436a7a8b
parent 71 samples/privilegedcreator/src/api/Executors.java@a9bd40166b60
permissions -rw-r--r--
More code snippets for the mutex example
     1 
     2 package org.apidesign.privileged.api;
     3 
     4 import java.util.concurrent.Executor;
     5 
     6 /**
     7  *
     8  * @author Jaroslav Tulach <jtulach@netbeans.org>
     9  */
    10 public final class Executors {
    11     /** let's prefer factory methods */
    12     private Executors() {
    13     }
    14     
    15     
    16     public static Executor create() {
    17         return new Simple();
    18     }
    19     
    20     public static Executor create(boolean fair) {
    21         Configuration conf = new Configuration();
    22         conf.setFair(fair);
    23         return new Fair(conf);
    24     }
    25 
    26     // BEGIN: design.less.privileged
    27     public static Executor create(Configuration config) {
    28         return new Fair(config);
    29     }
    30     
    31     public static final class Configuration {
    32         boolean fair;
    33         int maxWaiters = -1;
    34         
    35         public void setFair(boolean fair) {
    36             this.fair = fair;
    37         }
    38         public void setMaxWaiters(int max) {
    39             this.maxWaiters = max;
    40         }
    41     }
    42     // END: design.less.privileged
    43     
    44     private static final class Simple implements Executor {
    45         public synchronized void execute(Runnable command) {
    46             command.run();
    47         }
    48     }
    49     private static final class Fair implements Executor {
    50         private final Configuration conf;
    51         
    52         public Fair(Configuration conf) {
    53             this.conf = conf;
    54         }
    55         
    56         public void execute(Runnable command) {
    57             // TBD
    58         }
    59     }
    60 }