Javolution 6.0.0 java
ConcurrentThreadImpl.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.internal;
10 
11 import java.util.concurrent.atomic.AtomicBoolean;
12 
14 
16 
20 public class ConcurrentThreadImpl extends RealtimeThread {
21 
22  private static int count;
24  private AtomicBoolean isBusy = new AtomicBoolean();
25  private Runnable logic;
26  private int priority;
27 
32  this.setName("ConcurrentThread-" + ++count);
33  setDaemon(true);
34  }
35 
40  public boolean execute(Runnable logic, ConcurrentContextImpl inContext) {
41  if (!isBusy.compareAndSet(false, true))
42  return false;
43  synchronized (this) {
44  this.priority = Thread.currentThread().getPriority();
45  this.context = inContext;
46  this.logic = logic;
47  this.notify();
48  }
49  return true;
50  }
51 
52  @Override
53  public void run() {
54  while (true) { // Main loop.
55  try {
56  synchronized (this) {
57  while (logic == null) this.wait();
58  }
59  this.setPriority(priority);
61  logic.run();
62  context.completed(null);
63  } catch (Throwable error) {
64  context.completed(error);
65  }
66  // Clean up.
67  logic = null;
68  context = null;
70  isBusy.set(false);
71  }
72  }
73 
74 }
javolution
javolution.context.internal.ConcurrentContextImpl
Definition: ConcurrentContextImpl.java:17
javolution.context.internal.ConcurrentThreadImpl.count
static int count
Definition: ConcurrentThreadImpl.java:22
javolution.context.internal.ConcurrentThreadImpl.priority
int priority
Definition: ConcurrentThreadImpl.java:26
javolution.context
Definition: AbstractContext.java:9
javolution.context.internal.ConcurrentThreadImpl.logic
Runnable logic
Definition: ConcurrentThreadImpl.java:25
javax
javolution.context.AbstractContext
Definition: AbstractContext.java:40
javolution.context.internal.ConcurrentThreadImpl.run
void run()
Definition: ConcurrentThreadImpl.java:53
javolution.context.internal.ConcurrentThreadImpl.isBusy
AtomicBoolean isBusy
Definition: ConcurrentThreadImpl.java:24
javolution.context.AbstractContext.inherit
static void inherit(AbstractContext ctx)
Definition: AbstractContext.java:131
javax.realtime
Definition: RealtimeThread.java:1
javolution.context.internal.ConcurrentThreadImpl.execute
boolean execute(Runnable logic, ConcurrentContextImpl inContext)
Definition: ConcurrentThreadImpl.java:40
javolution.context.internal.ConcurrentContextImpl.completed
synchronized void completed(Throwable error)
Definition: ConcurrentContextImpl.java:48
javolution.context.internal.ConcurrentThreadImpl
Definition: ConcurrentThreadImpl.java:20
javolution.context.internal.ConcurrentThreadImpl.ConcurrentThreadImpl
ConcurrentThreadImpl()
Definition: ConcurrentThreadImpl.java:31
Thread
javax.realtime.RealtimeThread
Definition: RealtimeThread.java:5
javolution.context.internal.ConcurrentThreadImpl.context
ConcurrentContextImpl context
Definition: ConcurrentThreadImpl.java:23