ignite-5075
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/8d7233e8 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/8d7233e8 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/8d7233e8 Branch: refs/heads/ignite-5075 Commit: 8d7233e800e6c1f6f6dc498b85b9b8afd007c261 Parents: 118a02c Author: sboikov <[email protected]> Authored: Fri May 26 12:03:08 2017 +0300 Committer: sboikov <[email protected]> Committed: Fri May 26 12:03:08 2017 +0300 ---------------------------------------------------------------------- .../IgniteCacheRandomOperationBenchmark.java | 42 +++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/8d7233e8/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/load/IgniteCacheRandomOperationBenchmark.java ---------------------------------------------------------------------- diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/load/IgniteCacheRandomOperationBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/load/IgniteCacheRandomOperationBenchmark.java index 4010f5e..9c9cbe4 100644 --- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/load/IgniteCacheRandomOperationBenchmark.java +++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/load/IgniteCacheRandomOperationBenchmark.java @@ -31,6 +31,9 @@ import java.util.TreeMap; import java.util.TreeSet; import java.util.UUID; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicLong; import javax.cache.CacheException; @@ -448,25 +451,36 @@ public class IgniteCacheRandomOperationBenchmark extends IgniteAbstractBenchmark startPreloadLogging(args.preloadLogsInterval()); - Thread[] threads = new Thread[availableCaches.size()]; + ExecutorService executor = Executors.newFixedThreadPool(10); - for (int i = 0; i < availableCaches.size(); i++) { - final String cacheName = availableCaches.get(i).getName(); + try { + List<Future<?>> futs = new ArrayList<>(); + + final Thread thread = Thread.currentThread(); + + for (int i = 0; i < availableCaches.size(); i++) { + final String cacheName = availableCaches.get(i).getName(); - threads[i] = new Thread() { - @Override public void run() { - try (IgniteDataStreamer<Object, Object> dataLdr = ignite().dataStreamer(cacheName)) { - for (int i = 0; i < args.preloadAmount() && !isInterrupted(); i++) - dataLdr.addData(createRandomKey(i, cacheName), createRandomValue(i, cacheName)); + futs.add(executor.submit(new Runnable() { + @Override public void run() { + try (IgniteDataStreamer<Object, Object> dataLdr = ignite().dataStreamer(cacheName)) { + for (int i = 0; i < args.preloadAmount(); i++) { + if (i % 100 == 0 && thread.isInterrupted()) + break; + + dataLdr.addData(createRandomKey(i, cacheName), createRandomValue(i, cacheName)); + } + } } - } - }; + })); + } - threads[i].start(); + for (Future<?> fut : futs) + fut.get(); + } + finally { + executor.shutdown(); } - - for (Thread thread : threads) - thread.join(); stopPreloadLogging(); }
