Advertisement
Guest User

Untitled

a guest
Dec 17th, 2013
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.97 KB | None | 0 0
  1. import org.apache.commons.lang3.RandomStringUtils;
  2.  
  3. import java.util.Set;
  4. import java.util.concurrent.ConcurrentSkipListSet;
  5. import java.util.concurrent.CountDownLatch;
  6. import java.util.concurrent.Executor;
  7. import java.util.concurrent.Executors;
  8. import java.util.concurrent.atomic.AtomicInteger;
  9.  
  10. public class Kernel {
  11.  
  12.     static final int TRIALS = 5000000;
  13.  
  14.     static Executor executor = Executors.newFixedThreadPool(20);
  15.     static CountDownLatch latch = new CountDownLatch(TRIALS);
  16.     private static Set<String> ids = new ConcurrentSkipListSet<String>();
  17.     public static void main(String ... args) {
  18.         final AtomicInteger counter = new AtomicInteger(0);
  19.         for (int i = 1; i<=TRIALS; i++) {
  20.             executor.execute(new Runnable() {
  21.                 @Override
  22.                 public void run() {
  23.                     String id = new Generator().getId();
  24.                     if (ids.contains(id)) {
  25.                         counter.incrementAndGet();
  26.                     } else {
  27.                         ids.add(id);
  28.                     }
  29.                     latch.countDown();
  30.                 }
  31.             });
  32.         }
  33.         try {
  34.             latch.await();
  35.         } catch (InterruptedException e) {
  36.             e.printStackTrace();
  37.         }
  38.         System.out.println("Trials: " + TRIALS);
  39.         System.out.println("Collisions: " + counter);
  40.         System.out.println("Ids size: " + ids.size());
  41.         System.exit(0);
  42.     }
  43.  
  44.     static class Generator {
  45.         public String getId() {
  46.             return new StringBuilder()
  47.                     .append(RandomStringUtils.randomAlphanumeric(4))
  48.                     .append("-")
  49.                     .append(RandomStringUtils.randomAlphanumeric(4))
  50.                     .append("-")
  51.                     .append(RandomStringUtils.randomAlphanumeric(4))
  52.                     .append("-")
  53.                     .append(RandomStringUtils.randomAlphanumeric(4)).toString();
  54.  
  55.         }
  56.     }
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement