Javolution 6.0.0 java
ParallelCollectionImpl.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.util.internal.collection;
10
11
import
java.util.Iterator;
12
13
import
javolution
.
context
.
ConcurrentContext
;
14
import
javolution
.
util
.
function
.
Consumer
;
15
import
javolution
.
util
.
function
.
Equality
;
16
import
javolution
.
util
.
service
.
CollectionService
;
17
21
public
class
ParallelCollectionImpl
<E>
extends
CollectionView
<E> {
22
23
private
static
final
long
serialVersionUID
= 0x600L;
// Version.
24
25
public
ParallelCollectionImpl
(
CollectionService<E>
target
) {
26
super(
target
);
27
}
28
29
@Override
30
public
boolean
add
(E e) {
31
return
target
().add(e);
32
}
33
34
@Override
35
public
void
clear
() {
36
target
().clear();
37
}
38
39
@Override
40
public
Equality<? super E>
comparator
() {
41
return
target
().comparator();
42
}
43
44
@Override
45
public
boolean
contains
(Object obj) {
46
return
target
().contains(obj);
47
}
48
49
@Override
50
public
boolean
isEmpty
() {
51
return
target
().isEmpty();
52
}
53
54
@Override
55
public
Iterator<E>
iterator
() {
56
return
target
().iterator();
57
}
58
59
@Override
60
public
void
perform
(
final
Consumer
<
CollectionService<E>
> action,
61
CollectionService<E>
view) {
62
ConcurrentContext
ctx =
ConcurrentContext
.
enter
();
63
try
{
64
int
concurrency = ctx.
getConcurrency
();
65
CollectionService<E>
[] subViews = view.
split
(concurrency + 1);
66
for
(
int
i = 1; i < subViews.length; i++) {
67
final
CollectionService<E>
subView = subViews[i];
68
ctx.
execute
(
new
Runnable() {
69
@Override
70
public
void
run() {
71
target
().perform(action, subView);
72
}
73
});
74
}
75
target
().perform(action, subViews[0]);
// This thread works too !
76
}
finally
{
77
// Any exception raised during parallel iterations will be re-raised here.
78
ctx.
exit
();
79
}
80
}
81
82
@Override
83
public
boolean
remove
(Object obj) {
84
return
target
().remove(obj);
85
}
86
87
@Override
88
public
int
size
() {
89
return
target
().size();
90
}
91
92
@Override
93
public
void
update
(
final
Consumer
<
CollectionService<E>
> action,
94
CollectionService<E>
view) {
95
ConcurrentContext
ctx =
ConcurrentContext
.
enter
();
96
try
{
97
int
concurrency = ctx.
getConcurrency
();
98
CollectionService<E>
[] subViews = view.
threadSafe
()
99
.split(concurrency + 1);
100
for
(
int
i = 1; i < subViews.length; i++) {
101
final
CollectionService<E>
subView = subViews[i];
102
ctx.
execute
(
new
Runnable() {
103
@Override
104
public
void
run() {
105
target
().update(action, subView);
106
}
107
});
108
}
109
target
().perform(action, subViews[0]);
// This thread works too !
110
}
finally
{
111
// Any exception raised during parallel iterations will be re-raised here.
112
ctx.
exit
();
113
}
114
}
115
116
}
javolution
javolution.util.service
Definition:
BitSetService.java:9
javolution.util.internal.collection.CollectionView
Definition:
CollectionView.java:29
javolution.util.internal.collection.ParallelCollectionImpl.serialVersionUID
static final long serialVersionUID
Definition:
ParallelCollectionImpl.java:23
javolution.context
Definition:
AbstractContext.java:9
javolution.util.internal.collection.ParallelCollectionImpl.contains
boolean contains(Object obj)
Definition:
ParallelCollectionImpl.java:45
javolution.context.ConcurrentContext.execute
static void execute(Runnable... logics)
Definition:
ConcurrentContext.java:209
javolution.util.function.Consumer
Definition:
Consumer.java:22
javolution.util.internal.collection.ParallelCollectionImpl.add
boolean add(E e)
Definition:
ParallelCollectionImpl.java:30
javolution.util.service.CollectionService
Definition:
CollectionService.java:25
javolution.util.function.Equality
Definition:
Equality.java:39
javolution.context.ConcurrentContext
Definition:
ConcurrentContext.java:151
javolution.util.internal.collection.CollectionView.target
CollectionService< E > target
Definition:
CollectionView.java:33
javolution.util.internal.collection.ParallelCollectionImpl.comparator
Equality<? super E > comparator()
Definition:
ParallelCollectionImpl.java:40
javolution.util.internal.collection.ParallelCollectionImpl.update
void update(final Consumer< CollectionService< E >> action, CollectionService< E > view)
Definition:
ParallelCollectionImpl.java:93
javolution.util.service.CollectionService.threadSafe
CollectionService< E > threadSafe()
javolution.util.internal.collection.ParallelCollectionImpl
Definition:
ParallelCollectionImpl.java:21
javolution.util.function
Definition:
Consumer.java:9
javolution.context.ConcurrentContext.exit
void exit()
Definition:
ConcurrentContext.java:255
javolution.util.internal.collection.ParallelCollectionImpl.ParallelCollectionImpl
ParallelCollectionImpl(CollectionService< E > target)
Definition:
ParallelCollectionImpl.java:25
javolution.context.ConcurrentContext.enter
static ConcurrentContext enter()
Definition:
ConcurrentContext.java:186
javolution.util.internal.collection.ParallelCollectionImpl.isEmpty
boolean isEmpty()
Definition:
ParallelCollectionImpl.java:50
javolution.util.internal.collection.ParallelCollectionImpl.clear
void clear()
Definition:
ParallelCollectionImpl.java:35
javolution.util.function.Splittable.split
T[] split(int n)
javolution.util.internal.collection.ParallelCollectionImpl.iterator
Iterator< E > iterator()
Definition:
ParallelCollectionImpl.java:55
javolution.context.ConcurrentContext.getConcurrency
abstract int getConcurrency()
javolution.util.internal.collection.ParallelCollectionImpl.perform
void perform(final Consumer< CollectionService< E >> action, CollectionService< E > view)
Definition:
ParallelCollectionImpl.java:60
javolution.util
Definition:
FastBitSet.java:9
javolution.util.internal.collection.ParallelCollectionImpl.size
int size()
Definition:
ParallelCollectionImpl.java:88
core-java
src
main
java
javolution
util
internal
collection
ParallelCollectionImpl.java
Generated by
1.8.18