-1

我正在创建一个连接线程,如果超过预定的执行限制时间,我需要杀死她。

示例:如果连接尝试时间超过 5 秒,则中断连接线程。

我该如何实施?:(

我正在使用 Android SDK (java)。

谢谢

4

2 回答 2

4

如果您使用的是套接字,则可以像这样设置超时限制:

Socket s1 = new Socket();
s1.setSoTimeout(200);
s1.connect(new InetSocketAddress("192.168.1.2", 1254), 200);

如果你想在线程中设置时间限制,你可以使用 Executors。

try {
  int timeout = 5;
  ExecutorService executor = Executors.newSingleThreadExecutor();
        executor.invokeAll(Arrays.asList(new Task()), timeout, TimeUnit.SECONDS);
        executor.shutdown();
 } catch (Exception e) {
 }
于 2013-09-07T20:31:47.210 回答
1

你在想这一切都是错的。如果你觉得你需要杀死一个线程,那意味着该线程正在做你不希望它做的事情。这意味着线程已损坏,应该修复。您不想从外部“进入”线程并使其执行您想要执行的操作。您想从内部对该线程进行编码,以便它执行您实际想要完成的操作,并且只执行您想要完成的操作。线程合作完成一项工作。永远不应该对线程进行编码来完成不希望完成的工作。

在大多数情况下,您可以不理会线程。只需停止等待或尝试其他方法。也许您可能会设置一些标志或给线程一些指示,表明它不再需要它的工作,并让线程不时检查该指示,以便它可以优雅地自行终止。

线程是否在做一些必须停止的实际上有害的事情?如果是这样,请在线程中修复它。

于 2013-09-07T20:23:18.447 回答