如何在J2ME中实现线程超时?

3

我正在使用J2ME中的Connector,发现有时会花费很长时间才能发送请求,有时甚至可能会停止整个过程。
因此,我尝试将与Connector相关的代码放入线程中,并尝试为该线程设置超时。但是我发现在J2ME中这样做非常困难,因为没有join(timeout)方法。
有没有办法解决这个问题?或者在J2ME中处理网络连接的更好方法?
非常感谢。


你是如何集成超时功能的? - Viraj
1个回答

4

您应该使用以下3种机制的组合:

  • Connector.open() 可以与第三个参数一起用于超时。
  • 您可以从不同的线程中调用 Thread.sleep()Connection.close(),而不是您调用 Connector.open() 的那个线程。
  • 您可以从不同的线程中调用 Thread.sleep()Thread.interrupt(),而不是您调用 Connector.open() 的那个线程。

在一些实现不良的 MIDP 运行时上,如果连接正在忙碌中,Connection.close() 可能会阻塞。您需要在计划支持的手机上进行彻底测试。

Thread.interrupt() 可能会使 MIDP 运行时(和底层手机操作系统)留下孤立资源,因此只在万不得已时使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接