我一直试图制作一个强制算法,但它似乎不起作用。它会在三个字符串生成并冻结后停止。
这是我的代码:
public static final char[] CHARSET_1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890./,[]\;\'\"".toCharArray();
public final ExecutorService executor = Executors.newFixedThreadPool(30);
protected void recur(final String base, final int times) {
if (base.length() < times) {
for (final char c : CHARSET_1) {
final String b = base + c;
System.out.println("Current: " + b);
executor.execute(new Runnable() {
public void run() {
recur(b, times);
} // I also tried it without the executor, same results.
});
}
}
}
public void bruteforce() {
final Thread generator = new Thread(new Runnable() {
public void run() {
recur("", 5);
}
});
generator.start();
}
在功能中
recur("", 5);
,5表示生成长度为5 + 1的字符串。
这是我得到的输出:
a
aa
aaa
然后冻结了。我无法弄清楚为什么。我认为这可能是内存泄漏问题,但我不知道。我也尝试过没有ThreadPools,但我似乎得到同样的问题......
感谢任何帮助,非常感谢! :)