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

时间:2010-05-07 08:41:36

标签: java networking mobile timeout java-me

我在J2ME中使用Connector并发现有时需要很长时间才能发送请求,有时它可能会停止整个过程。
所以我尝试将与Connector相关的代码放在一个线程中,并尝试将超时设置为该线程。但我发现在J2ME中执行此操作非常困难,因为J2ME中没有join(timeout)
有没有办法做到这一点?或者在J2ME中处理网络连接的更好方法是什么? 非常感谢。

1 个答案:

答案 0 :(得分:4)

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

  • Connector.open()可以与第三个参数一起用于超时。
  • 您可以通过与您拨打的Thread.sleep()不同的帖子致电Connection.close()Connector.open()
  • 您可以通过与您拨打的Thread.sleep()不同的帖子致电Thread.interrupt()Connector.open()

在一些执行不当的MIDP运行时,如果连接繁忙,Connection.close()可以阻止。您需要在计划支持的手机上彻底测试。

Thread.interrupt()可以使MIDP运行时(以及底层手机操作系统)具有孤立资源,因此只能将其用作最后的手段。