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