如何杀死正在等待Java中阻塞函数调用的线程?

anu*_*sth 9 java multithreading midp java-me

我有一个帖子:

Thread t = new Thread(){
    public void run(){
        ServerSocketConnection scn = (ServerSocketConnection)
                Connector.open("socket://:1234");
        // Wait for a connection.
        SocketConnection sc = (SocketConnection) scn.acceptAndOpen();
       //do other operation
    }
};
t.start();
Run Code Online (Sandbox Code Playgroud)

让我们说没有客户端连接到服务器,所以这个线程将被阻止.现在我想杀死上面的线程t?我怎么能杀了它?

Tom*_*ett 8

Thread.interrupt()不会中断受阻的插座上的线程.您可以尝试调用Thread.stop()Thread.destroy(),但这些方法已被弃用(编辑:实际上,在J2ME中不存在),在某些情况下不起作用,原因可以在这里阅读.正如那篇文章所提到的,在你的情况下,最好的解决方案是关闭你阻塞的套接字:

在某些情况下,您可以使用特定于应用程序的技巧.例如,如果线程正在等待已知套接字,则可以关闭套接字以使线程立即返回.不幸的是,确实没有任何技术可以发挥作用.应该注意的是,在等待线程没有响应Thread.interrupt的所有情况下,它也不会响应Thread.stop.此类情况包括故意拒绝服务攻击,以及thread.stop和thread.interrupt无法正常工作的I/O操作.