1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/samples/privilegedcreator/src/api/Locks.java Sat Jun 14 09:51:01 2008 +0200
1.3 @@ -0,0 +1,58 @@
1.4 +
1.5 +package 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 Locks {
1.14 + /** let's prefer factory methods */
1.15 + private Locks() {
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 + return new Fair(fair);
1.25 + }
1.26 +
1.27 + // BEGIN: design.less.privileged
1.28 + public static Executor create(Configuration config) {
1.29 + return new Fair(config.fair);
1.30 + }
1.31 +
1.32 + public static final class Configuration {
1.33 + boolean fair;
1.34 + int maxWaiters = -1;
1.35 +
1.36 + public void setFair(boolean fair) {
1.37 + this.fair = fair;
1.38 + }
1.39 + public void setMaxWaiters(int max) {
1.40 + this.maxWaiters = max;
1.41 + }
1.42 + }
1.43 + // END: design.less.privileged
1.44 +
1.45 + private static final class Simple implements Executor {
1.46 + public synchronized void execute(Runnable command) {
1.47 + command.run();
1.48 + }
1.49 + }
1.50 + private static final class Fair implements Executor {
1.51 + private boolean fair;
1.52 +
1.53 + public Fair(boolean fair) {
1.54 + this.fair = fair;
1.55 + }
1.56 +
1.57 + public void execute(Runnable command) {
1.58 + // TBD
1.59 + }
1.60 + }
1.61 +}