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
13
import
javax
.
realtime
.
RealtimeThread
;
14
15
import
javolution
.
context
.
AbstractContext
;
16
20
public
class
ConcurrentThreadImpl
extends
RealtimeThread
{
21
22
private
static
int
count
;
23
private
ConcurrentContextImpl
context
;
24
private
AtomicBoolean
isBusy
=
new
AtomicBoolean();
25
private
Runnable
logic
;
26
private
int
priority
;
27
31
public
ConcurrentThreadImpl
() {
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
);
60
AbstractContext
.
inherit
(
context
);
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
;
69
AbstractContext
.
inherit
(
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
core-java
src
main
java
javolution
context
internal
ConcurrentThreadImpl.java
Generated by
1.8.18