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 
17 
21 public class ParallelMapImpl<K, V> extends MapView<K, V> {
22 
23  private static final long serialVersionUID = 0x600L; // Version.
24 
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
46  return target().keyComparator();
47  }
48 
49  @Override
50  public void perform(final Consumer<MapService<K, V>> action,
51  MapService<K, V> view) {
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) {
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
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