1 package com.romix.scala.collection.concurrent;
\r
3 import java.util.concurrent.ExecutorService;
\r
4 import java.util.concurrent.Executors;
\r
5 import java.util.concurrent.TimeUnit;
\r
7 import org.junit.Test;
\r
9 public class TestMultiThreadInserts {
\r
11 public void testMultiThreadInserts () {
\r
12 final int nThreads = 2;
\r
13 final ExecutorService es = Executors.newFixedThreadPool (nThreads);
\r
14 final TrieMap<Object, Object> bt = new TrieMap<Object, Object> ();
\r
15 for (int i = 0; i < nThreads; i++) {
\r
16 final int threadNo = i;
\r
17 es.execute (new Runnable () {
\r
19 public void run () {
\r
20 for (int j = 0; j < 500 * 1000; j++) {
\r
21 if (j % nThreads == threadNo) {
\r
22 bt.put (Integer.valueOf (j), Integer.valueOf (j));
\r
31 es.awaitTermination (3600L, TimeUnit.SECONDS);
\r
32 } catch (final InterruptedException e) {
\r
33 e.printStackTrace ();
\r
36 for (int j = 0; j < 500 * 1000; j++) {
\r
37 final Object lookup = bt.lookup (Integer.valueOf (j));
\r
38 TestHelper.assertEquals (Integer.valueOf (j), lookup);
\r