First, I think 30ms is an incredible short time to give up on a task. Lots of things could impact what might be considered normal execution time, such as a pause during garbage collection.
If whatever task you're bringing is really completely handing the system after 30ms, I suspect you're not going to be able to safely terminate the thread. I don't know a lot about the innerads of how Lucee handles terminating threads, but I image much like timeouts work, if the thread is waiting on an external even to finishing, terminating the thread might not actually occur when you think it should. It could also leave things in an unstable state, causing memory leaks, etc.