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 
17 
21 public class ParallelCollectionImpl<E> extends CollectionView<E> {
22 
23  private static final long serialVersionUID = 0x600L; // Version.
24 
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
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) {
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) {
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