Короче, ты не можешь. Или, точнее, не стоит. Никогда и ни при каких обстоятельствах.
У потока A нет абсолютно никакого способа узнать точное состояние потока B, когда A убивает B. Если B удерживает какие-либо блокировки или находится в середине системного вызова, или вызывает системный каркас, когда A убивает его, то итоговое состояние вашего приложения будет недетерминированным.
На самом деле - это будет несколько детерминировано, поскольку вы в значительной степени гарантированы, что сбой произойдет когда-нибудь в ближайшем будущем.
<Ч />
Если вам нужно завершить поток B, вы должны сделать это контролируемым образом. Наиболее распространенным способом является наличие cancel
флага или метода, который можно установить / вызвать. Затем поток B должен периодически проверять этот флаг или проверять, был ли вызван метод, очистить все, что он делает, и затем завершиться.
То есть вам придется изменить логику в потоке B для поддержки этого.