Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.apache.commons.lang3.RandomStringUtils;
- import java.util.Set;
- import java.util.concurrent.ConcurrentSkipListSet;
- import java.util.concurrent.CountDownLatch;
- import java.util.concurrent.Executor;
- import java.util.concurrent.Executors;
- import java.util.concurrent.atomic.AtomicInteger;
- public class Kernel {
- static final int TRIALS = 5000000;
- static Executor executor = Executors.newFixedThreadPool(20);
- static CountDownLatch latch = new CountDownLatch(TRIALS);
- private static Set<String> ids = new ConcurrentSkipListSet<String>();
- public static void main(String ... args) {
- final AtomicInteger counter = new AtomicInteger(0);
- for (int i = 1; i<=TRIALS; i++) {
- executor.execute(new Runnable() {
- @Override
- public void run() {
- String id = new Generator().getId();
- if (ids.contains(id)) {
- counter.incrementAndGet();
- } else {
- ids.add(id);
- }
- latch.countDown();
- }
- });
- }
- try {
- latch.await();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- System.out.println("Trials: " + TRIALS);
- System.out.println("Collisions: " + counter);
- System.out.println("Ids size: " + ids.size());
- System.exit(0);
- }
- static class Generator {
- public String getId() {
- return new StringBuilder()
- .append(RandomStringUtils.randomAlphanumeric(4))
- .append("-")
- .append(RandomStringUtils.randomAlphanumeric(4))
- .append("-")
- .append(RandomStringUtils.randomAlphanumeric(4))
- .append("-")
- .append(RandomStringUtils.randomAlphanumeric(4)).toString();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement