在java中,当线程被挂起时,如何停止线程?

在java中,当线程被挂起时,如何停止线程?,java,android,multithreading,Java,Android,Multithreading,在Java中,当线程被挂起时,如何停止线程? 我不能使用interrupt(),因为我不能检查挂起线程中的中断标志。 也不推荐使用stop(),因为它不安全 提前谢谢 更新: 线程挂起在套接字上。连接(): 干净地关闭线程的唯一方法是必须优雅地停止线程本身 如果某个线程在某个资源(如套接字读或写)上被阻塞,您可以尝试关闭它,它将触发IOException。如何取消阻止线程完全取决于它被阻止的原因 如果您正在强制一个线程停止,您已经放弃了它将被正常停止的想法,在这种情况下,thread.stop(

在Java中,当线程被挂起时,如何停止线程? 我不能使用interrupt(),因为我不能检查挂起线程中的中断标志。 也不推荐使用stop(),因为它不安全

提前谢谢

更新: 线程挂起在套接字上。连接():


干净地关闭线程的唯一方法是必须优雅地停止线程本身

如果某个线程在某个资源(如套接字读或写)上被阻塞,您可以尝试关闭它,它将触发IOException。如何取消阻止线程完全取决于它被阻止的原因


如果您正在强制一个线程停止,您已经放弃了它将被正常停止的想法,在这种情况下,
thread.stop()
System.exit()
是您唯一的选择

定义你所说的“线程挂起”是什么意思我已经更新了question@Division_Bell如果您使用的是android,则声明:“close()可用于从另一个线程中止此调用。”您好,感谢您的回复。实际上,问题是,Socket.close()也挂起,您可以先尝试
Socket.shutdownOutput()
吗?这将阻止它尝试发送任何未刷新的数据
Socket.close()
不应该阻塞,除非您的消费者速度太慢。
Method m = device.getClass().getMethod("createInsecureRfcommSocket",
            new Class[] { int.class });
final BluetoothSocket socket = (BluetoothSocket) m.invoke(device, port);
socket.connect();