Оператор == всегда предназначен для сравнения ссылок на объекты, тогда как метод сравнения строк .equals () переопределяется для сравнения содержимого:
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1 == s2); // It prints false (reference comparison)
System.out.println(s1.equals(s2)); // It prints true (content comparison)
Это потому, что она упаковывает вашу задачу Callable
как RunnableFuture
перед очередью или выполнением.
Этот RunnableFuture
реализует интерфейс Runnable
(в дополнение к Future
).
Таким образом, все вызовы могут быть поставлены в очередь и выполнены без каких-либо проблем.
Посмотрите на AbstractExecutorService
источник для получения дополнительной информации.