Javolution 6.0.0 java
ConcurrentContext.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.context;
10 
12 import javolution.lang.MathLib;
14 
151 public abstract class ConcurrentContext extends AbstractContext {
152 
161  @Override
162  protected Integer getDefault() {
163  return Runtime.getRuntime().availableProcessors() - 1;
164  }
165 
166  @Override
167  protected Integer initialized(Integer value) {
168  return MathLib.min(value, 65536); // Hard-limiting
169  }
170 
171  @Override
172  protected Integer reconfigured(Integer oldCount, Integer newCount) {
173  throw new UnsupportedOperationException(
174  "Concurrency reconfiguration not supported.");
175  }
176  };
177 
181  protected ConcurrentContext() {}
182 
186  public static ConcurrentContext enter() {
188  if (ctx == null) { // Root.
190  }
191  return (ConcurrentContext) ctx.enterInner();
192  }
193 
209  public static void execute(Runnable... logics) {
211  try {
212  for (Runnable logic : logics) {
213  ctx.execute(logic);
214  }
215  } finally {
216  ctx.exit();
217  }
218  }
219 
228  public abstract void execute(Runnable logic);
229 
235  public abstract void setConcurrency(int concurrency);
236 
242  public abstract int getConcurrency();
243 
254  @Override
255  public void exit() { // Redefine here for documentation purpose.
256  super.exit();
257  }
258 }
javolution
javolution.lang.Configurable
Definition: Configurable.java:78
javolution.lang.MathLib
Definition: MathLib.java:20
javolution.context.ConcurrentContext.execute
static void execute(Runnable... logics)
Definition: ConcurrentContext.java:209
javolution.osgi.internal.OSGiServices.getConcurrentContext
static ConcurrentContext getConcurrentContext()
Definition: OSGiServices.java:74
javolution.context.ConcurrentContext.ConcurrentContext
ConcurrentContext()
Definition: ConcurrentContext.java:181
javolution.lang
Definition: Configurable.java:9
javolution.context.AbstractContext
Definition: AbstractContext.java:40
javolution.context.ConcurrentContext
Definition: ConcurrentContext.java:151
javolution.context.ConcurrentContext.CONCURRENCY
static final Configurable< Integer > CONCURRENCY
Definition: ConcurrentContext.java:160
javolution.context.AbstractContext.current
static AbstractContext current()
Definition: AbstractContext.java:61
javolution.context.ConcurrentContext.execute
abstract void execute(Runnable logic)
javolution.context.ConcurrentContext.exit
void exit()
Definition: ConcurrentContext.java:255
javolution.context.AbstractContext.enterInner
AbstractContext enterInner()
Definition: AbstractContext.java:141
javolution.context.ConcurrentContext.enter
static ConcurrentContext enter()
Definition: ConcurrentContext.java:186
javolution.osgi.internal
Definition: ConfigurableListenerImpl.java:9
javolution.context.ConcurrentContext.setConcurrency
abstract void setConcurrency(int concurrency)
javolution.osgi.internal.OSGiServices
Definition: OSGiServices.java:50
javolution.osgi
javolution.context.ConcurrentContext.getConcurrency
abstract int getConcurrency()
javolution.lang.MathLib.min
static int min(int x, int y)
Definition: MathLib.java:1010