package com.querydsl.core.types; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public final class TemplateInfiniteLoop { private TemplateInfiniteLoop() { } static String[] templates = createTemplates(); public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(3); executorService.execute(new Runner()); executorService.execute(new Runner()); executorService.execute(new Runner()); executorService.shutdown(); } private static class Runner implements Runnable { public void run() { for (int i = 0; i < 100000; i++) { TemplateFactory.DEFAULT.create(templates[i % templates.length]); } } } /** * Generates array of strings: "\0a", "\0\0a", "\0\0\0a" etc. all with the * same hashCode * * @return */ private static String[] createTemplates() { String[] tab = new String[10000]; StringBuilder builder = new StringBuilder(); for (int i = 0; i < tab.length; i++) { builder.append('\0'); tab[i] = builder.toString() + 'a'; } return tab; } }