Всякий раз, когда вы хотите использовать потоки и очереди вместе для выполнения работы, очень вероятно, что ExecutorService - лучший выбор. Это потому, что они предназначены для обобщения обеих этих концепций.
ExecutorService es = Executors.new (pick a thread pool of your choice)
// in thread A
es.execute(new Runnable() {
public void run() {
// task to run on Thread B
}
});
// in thread A
Future<Type> future = es.submit(new Callable<Type>() {
public Type call() {
// task to run on Thread B and ...
return type;
}
});
// later get the result
Type t = future.get();
Примечание: вам не нужно напрямую обращаться к очереди или пулу потоков, все, что вам нужно, это сказать, что вы хотите, чтобы он делал.