Sometimes the thread does not exit when success in multi-thread mode.
I guess there is some problem in the wait-notify mechanism:
if (request == null) {
if (threadAlive.get() == 0 && exitWhenComplete) {
break;
}
// wait until new url added
waitNewUrl();
}