No,
There is no safe way for one thread to forcibly kill another. There is no safe way for one thread to force another thread to do anything.
The problem is, threads communicate through shared variables. And, the author of any multi-threaded program must carefully "synchronize" the activities of the different threads, so that no thread can ever see the shared variables in some invalid state that was caused by the activity of another thread.
If you make it possible for a thread to be killed at any time, then there is no way you can ensure that the killed thread won't leave shared variables in an irreparably bad state.
If you can't work around the need to kill a "child," then you should re-write the code so that the child is a child process. Processes only share state in much more controlled ways, and it is much easier to write an application that can safely continue to execute after killing off a rogue child process.