Добавляет задачи исполнителю так быстро, как только может.
for (;;) {
executor.execute(new MyHandler(myLBQ));
}
Это будет потреблять около 200 МБ в секунду. Это не имеет никакого отношения к тому, есть ли задачи для выполнения или нет.
Если вы не хотите этого делать, я предлагаю вам переместить цикл в runnable и добавить только один. Это заставит его ждать задачи вечно.
Лучше всего использовать встроенную очередь ExecutorService для постановки задач в очередь.
ExecutorService executor = Executors.newFixedThreadPool(3);
final int taskId = 1;
executor.submit(new Runnable() {
@Override
public void run() {
doSomething(taskId);
}
});
executor.shutdown();
Это делает то же самое, но намного проще, ИМХО.