Example usage for com.google.common.util.concurrent MoreExecutors sameThreadExecutor

List of usage examples for com.google.common.util.concurrent MoreExecutors sameThreadExecutor

Introduction

In this page you can find the example usage for com.google.common.util.concurrent MoreExecutors sameThreadExecutor.

Prototype

@Deprecated
@GwtIncompatible("TODO")
public static ListeningExecutorService sameThreadExecutor() 

Source Link

Document

Creates an executor service that runs each task in the thread that invokes execute/submit , as in CallerRunsPolicy .

Usage

From source file:org.xtreemfs.foundation.flease.sim.FleaseSim.java

/**
 * @param args the command line arguments
 *//* ww  w .j ava 2s. c  om*/
public static void main(String[] args) {
    try {
        final int dmax = 500;
        final int leaseTimeout = 5000;

        final int numHosts = 10;
        final FleaseStage[] stages = new FleaseStage[numHosts];

        final boolean useME = true;

        TimeSync.initializeLocal(50);

        final Communicator com = new Communicator(10, 100, 30000, 5, true, 0.2, 0.05);
        if (com.startAndWait() != Service.State.RUNNING) {
            LOG.error("Unable to start communicator", com.failureCause());
            System.exit(2);
        }

        List<InetSocketAddress> allPorts = new ArrayList(numHosts);
        List<InetSocketAddress>[] acceptors = new List[numHosts];
        MasterEpochHandlerInterface[] meHandlers = new MasterEpochHandlerInterface[numHosts];
        final AtomicReference<Flease>[] leaseStates = new AtomicReference[numHosts];

        for (int i = 0; i < numHosts; i++) {
            final int portNo = 1024 + i;
            final int myI = i;
            FleaseConfig cfg = new FleaseConfig(leaseTimeout, dmax, 500, new InetSocketAddress(portNo),
                    "localhost:" + (1024 + i), 5, true, 0);
            leaseStates[i] = new AtomicReference<Flease>(Flease.EMPTY_LEASE);

            if (useME) {
                meHandlers[i] = new MasterEpochHandlerInterface() {
                    long me = 0;

                    public long getMasterEpoch() {
                        return me;
                    }

                    @Override
                    public void sendMasterEpoch(FleaseMessage response, Continuation callback) {
                        response.setMasterEpochNumber(me);
                        callback.processingFinished();
                    }

                    @Override
                    public void storeMasterEpoch(FleaseMessage request, Continuation callback) {
                        me = request.getMasterEpochNumber();
                        callback.processingFinished();
                    }
                };
            }

            stages[i] = new FleaseStage(cfg, "/tmp/xtreemfs-test", new FleaseMessageSenderInterface() {

                public void sendMessage(FleaseMessage message, InetSocketAddress recipient) {
                    assert (message != null);
                    LOG.debug("received message for delivery to port {}: {}", recipient.getPort(), message);
                    message.setSender(new InetSocketAddress("localhost", portNo));
                    com.send(recipient.getPort(), message);
                }
            }, true, new FleaseViewChangeListenerInterface() {

                public void viewIdChangeEvent(ASCIIString cellId, int viewId) {
                }
            }, new FleaseStatusListener() {

                public void statusChanged(ASCIIString cellId, Flease lease) {

                    synchronized (leaseStates) {
                        leaseStates[myI].set(lease);
                    }
                    System.out.println("state change for " + portNo + ": " + lease.getLeaseHolder() + "/"
                            + lease.getLeaseTimeout_ms());
                }

                public void leaseFailed(ASCIIString cellId, FleaseException error) {
                    System.out.println("lease failed: " + error);
                    synchronized (leaseStates) {
                        leaseStates[myI].set(Flease.EMPTY_LEASE);
                    }
                    //restart my cell
                }
            }, meHandlers[i]);
            stages[i].addListener(new Service.Listener() {
                @Override
                public void starting() {
                }

                @Override
                public void running() {
                }

                @Override
                public void stopping(Service.State from) {
                }

                @Override
                public void terminated(Service.State from) {
                }

                @Override
                public void failed(Service.State from, Throwable failure) {
                    LOG.error("Failed service, from state: {} with exception {}", from, failure);
                    System.exit(100);
                }
            }, MoreExecutors.sameThreadExecutor());
            stages[i].start();
            allPorts.add(new InetSocketAddress("localhost", 1024 + i));
            com.openPort(1024 + i, stages[i]);
        }

        for (int i = 0; i < numHosts; i++) {
            final int portNo = 1024 + i;
            acceptors[i] = new ArrayList(numHosts - 1);
            for (InetSocketAddress ia : allPorts) {
                if (ia.getPort() != portNo)
                    acceptors[i].add(ia);
            }
            stages[i].openCell(new ASCIIString("testcell"), acceptors[i], false);
        }

        //do something

        do {
            final AtomicBoolean sync = new AtomicBoolean();
            final AtomicReference<ASCIIString> ref = new AtomicReference();

            Thread.sleep(100);
            System.out.print("checking local states: ");
            ASCIIString leaseHolder = null;
            int leaseInstanceId = 0;

            synchronized (leaseStates) {
                for (int i = 0; i < numHosts; i++) {
                    if (!leaseStates[i].get().isEmptyLease()) {
                        if (leaseHolder == null) {
                            leaseHolder = leaseStates[i].get().getLeaseHolder();
                        } else {
                            if (!leaseHolder.equals(leaseStates[i].get().getLeaseHolder())) {
                                com.stop();
                                System.out.println("INVARIANT VIOLATED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                                System.out.println("\n\n");
                                System.out.println("got lease for: " + leaseHolder);
                                System.out.println(
                                        "but host " + i + " learned " + leaseStates[i].get().getLeaseHolder());

                                for (int j = 0; j < numHosts; j++) {
                                    System.out.println(
                                            stages[j]._dump_acceptor_state(new ASCIIString("testcell")));
                                    System.out.println("signalled result: " + leaseStates[j].get());
                                    System.out.println("          valid: " + leaseStates[j].get().isValid());
                                }
                                System.exit(2);
                            } else {
                                System.out.print("+");
                            }
                        }
                    } else {
                        System.out.print("o");
                    }
                }
            }

            System.out.println("");

            final int host = (int) (Math.random() * numHosts);
            stages[host].closeCell(new ASCIIString("testcell"), false);

            //make sure that cells also time out some times (requires a wait > 2*lease_timeout)
            final int waitTime = (int) (Math.random() * (leaseTimeout * 2 + 1000));
            System.out.println("waiting for " + waitTime + "ms");
            Thread.sleep(waitTime);
            stages[host].openCell(new ASCIIString("testcell"), acceptors[host], false);
        } while (true);

        /*
        for (int i = 0; i < numHosts; i++) {
        stages[i].shutdown();
        }
        com.shutdown();
         */

    } catch (Exception ex) {
        ex.printStackTrace();
        System.exit(1);
    }

}

From source file:com.skcraft.plume.common.util.concurrent.Deferreds.java

/**
 * Make a new Deferred from the given future, using the same thread
 * executor as the default executor./*from ww  w.  j  a  v a2 s. c  o  m*/
 *
 * @param future The future
 * @param <V> The type returned by the future
 * @return A new Deferred
 */
public static <V> Deferred<V> makeDeferred(ListenableFuture<V> future) {
    return makeDeferred(future, MoreExecutors.sameThreadExecutor());
}

From source file:com.github.tempora.concurrent.BackgroundTaskExecutor.java

private static <T> void execute(final BackgroundTask<T> task, boolean wait) {
    final ListeningExecutorService service = MoreExecutors.listeningDecorator(
            wait ? MoreExecutors.sameThreadExecutor() : Executors.newSingleThreadExecutor());
    try {/*from   w w w  .j a v  a2 s .  c om*/
        if (task instanceof LifecycleAware) {
            ((LifecycleAware) task).beforeCall();
        }
        final ListenableFuture<T> resultFuture = service.submit(task);
        task.relatedFuture = resultFuture;
        Futures.addCallback(resultFuture, task);
        if (task instanceof LifecycleAware) {
            Futures.addCallback(resultFuture, new FutureCallback<T>() {
                @Override
                public void onSuccess(T result) {
                    ((LifecycleAware) task).afterCall();
                }

                @Override
                public void onFailure(Throwable t) {
                    ((LifecycleAware) task).afterCall();
                }
            });
        }
        if (wait) {
            Futures.getUnchecked(resultFuture);
        }
    } finally {
        service.shutdown();
    }
}

From source file:com.facebook.buck.event.BuckEventBusFactory.java

/**
 * This registers an {@link ErrorListener}. This is helpful when errors are logged during tests
 * that would not otherwise be noticed./*from w  w w  . j a v a  2 s . c o  m*/
 */
public static BuckEventBus newInstance(Clock clock, BuildId buildId) {
    BuckEventBus buckEventBus = new BuckEventBus(clock, MoreExecutors.sameThreadExecutor(), buildId,
            BuckEventBus.DEFAULT_SHUTDOWN_TIMEOUT_MS);
    buckEventBus.register(new ErrorListener());
    return buckEventBus;
}

From source file:com.dazito.retroeventbus.EventQueueExecutor.java

@Override
public void execute(Runnable runnable) {
    switch (executorType) {
    case SWING_MAIN_THREAD:
        SwingUtilities.invokeLater(runnable);
        break;// ww  w .  j av  a  2 s  . c o m
    case POSTING_THREAD:
        MoreExecutors.sameThreadExecutor().submit(runnable);
        break;
    case NEW_THREAD:
        new Thread(runnable).start();
        break;
    }
}

From source file:org.robotninjas.concurrent.FluentDecorator.java

FluentDecorator(ListenableFuture<V> future) {
    this(future, MoreExecutors.sameThreadExecutor());
}

From source file:fr.inria.eventcloud.delayers.actions.Action.java

public Action(SemanticCanOverlay overlay, int threadPoolSize) {
    this.overlay = overlay;

    if (threadPoolSize == 0) {
        this.threadPool = MoreExecutors.sameThreadExecutor();
    } else {//w  ww .  j ava 2 s .c o m
        this.threadPool = Executors.newFixedThreadPool(threadPoolSize, new ThreadFactory() {
            private int counter = 0;

            @Override
            public Thread newThread(Runnable r) {
                return new Thread(r, this.getClass().getSimpleName() + " Thread(" + (this.counter++) + ")");
            }
        });
    }
}

From source file:org.apache.curator.framework.listen.ListenerContainer.java

@Override
public void addListener(T listener) {
    addListener(listener, MoreExecutors.sameThreadExecutor());
}

From source file:com.facebook.buck.rules.FakeBuildContext.java

/**
 * User still needs to invoke {@link BuildContext.Builder#setDependencyGraph(DependencyGraph)} and
 * {@link BuildContext.Builder#setJavaPackageFinder(JavaPackageFinder)} before the
 * {@link BuildContext.Builder#build()} method of the builder can be invoked.
 * @param projectFilesystem for the {@link BuildContext} and for the {@link ExecutionContext} that
 *     is passed to the {@link DefaultStepRunner} for the {@link BuildContext}.
 *///from w w  w . j  av  a  2 s  . c  om
public static BuildContext.Builder newBuilder(ProjectFilesystem projectFilesystem) {
    ExecutionContext executionContext = TestExecutionContext.newBuilder()
            .setProjectFilesystem(projectFilesystem).build();

    return BuildContext.builder()
            .setStepRunner(new DefaultStepRunner(executionContext, MoreExecutors.sameThreadExecutor()))
            .setProjectFilesystem(projectFilesystem).setArtifactCache(new NoopArtifactCache())
            .setEventBus(BuckEventBusFactory.newInstance())
            .setBuildDependencies(BuildDependencies.FIRST_ORDER_ONLY)
            .setAndroidBootclasspathForAndroidPlatformTarget(Optional.<AndroidPlatformTarget>absent());
}

From source file:org.opendaylight.controller.sal.dom.broker.DataBrokerImpl.java

public DataBrokerImpl() {
    setDataReadRouter(new DataReaderRouter());
    setExecutor(MoreExecutors.sameThreadExecutor());
}