我正在创建一个连接线程,如果超过预定的执行限制时间,我需要杀死她。
示例:如果连接尝试时间超过 5 秒,则中断连接线程。
我该如何实施?:(
我正在使用 Android SDK (java)。
谢谢
我正在创建一个连接线程,如果超过预定的执行限制时间,我需要杀死她。
示例:如果连接尝试时间超过 5 秒,则中断连接线程。
我该如何实施?:(
我正在使用 Android SDK (java)。
谢谢
如果您使用的是套接字,则可以像这样设置超时限制:
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) {
}
你在想这一切都是错的。如果你觉得你需要杀死一个线程,那意味着该线程正在做你不希望它做的事情。这意味着线程已损坏,应该修复。您不想从外部“进入”线程并使其执行您想要执行的操作。您想从内部对该线程进行编码,以便它执行您实际想要完成的操作,并且只执行您想要完成的操作。线程合作完成一项工作。永远不应该对线程进行编码来完成不希望完成的工作。
在大多数情况下,您可以不理会线程。只需停止等待或尝试其他方法。也许您可能会设置一些标志或给线程一些指示,表明它不再需要它的工作,并让线程不时检查该指示,以便它可以优雅地自行终止。
线程是否在做一些必须停止的实际上有害的事情?如果是这样,请在线程中修复它。