A Runnable
не возвращает результат.Таким образом, Future::get
будет по-прежнему блокироваться до тех пор, пока не будет выполнен runnable, но затем просто вернет null
.
submit = (Future<emp>) pool.submit(new RunnableClass(emp));
Это приведение класса выдаст предупреждение, потому что вы на самом деле не получаете Future<emp>
здесь,И поскольку вы проигнорировали это, позже вы получили исключение.
Как говорит Javadoc, вы действительно получаете Future<?>
, что означает (в данном случае), что вы не можете использовать значение результата.
submit = pool.submit(new CallableClass(emp));
Если вы хотите получить результат, отправьте Callable.Обратите внимание, что приведение классов не было необходимости, оно может вывести общий тип Future из типа Callable.