退出函数如果没有在30秒内返回值java

时间:2015-06-14 14:42:03

标签: java multithreading

我有一些java代码发送短信。

它将在15秒内多次返回交货报告。(但有时不会发生)

如果没有提供15秒的发送报告,我想停止短信发送功能。

如果可以,请提供类似的示例代码或

 给出一些我应该阅读的链接。


非常感谢你......!


`

public String  sendTest(String port )

{

modemName = "Huwawi";
    bitRate = 115200;
    modemPin = "0000";
    SMSC = "+94785000008";  try {
        OutboundMessage msg;
        OutboundNotification outboundNotification = new OutboundNotification();
        SerialModemGateway gateway = new SerialModemGateway(id, "COM1", bitRate, modemName, "E17u-1");
        gateway.setInbound(true);
        gateway.setOutbound(true);
        gateway.setSimPin(modemPin);

        Service.getInstance().setOutboundMessageNotification(outboundNotification);

        Service.getInstance().addGateway(gateway);


        Service.getInstance().startService();

        msg = new OutboundMessage("+94710433607", "test successful !");

        Service.getInstance().sendMessage(msg);

       OutboundMessage.MessageStatuses status = msg.getMessageStatus();


       System.out.println(msg.getMessageStatus());

        Service.getInstance().stopService();
        Service.getInstance().removeGateway(gateway);

    } catch (Exception ex) {
        if (ex.getStackTrace()[2].getLineNumber() == 189) {
            JOptionPane.showMessageDialog(null,
                    "Port currently owned by usb Modem's application. \n Please close it & run the programm again.",
                    "Port Exception",
                    JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        } else {
            JOptionPane.showMessageDialog(null,
                    ex.getMessage(),
                    "Sending faile",
                    JOptionPane.ERROR_MESSAGE);
            ex.printStackTrace();
        }
    }return port;
}   

`
如果我提供了错误的端口号,则代码将停留在

Service.getInstance().startService();

如果我给出正确的端口号,则会在15秒之前收到送达报告。

如果我给出错误的端口号,代码不会给出或返回任何值。 如果代码在15秒内没有返回值,我知道端口号是错误的。

所以如果它在15秒内没有返回值,我想要一个帮助来自动关闭它。

再次感谢......!

1 个答案:

答案 0 :(得分:0)

你应该创建一个线程,并在15秒内没有任何事情发生时停止它。 我的意思是这样的:

Thread t = new Thread(){
    @Override
    public void run()
    {
         // Send SMS
    }
}
t.start();
// ...
long time = System.currentTimeMillis();
while(true)
{
    if(System.currentTimeMillis() - time > 15000)
         t.stop();
}

我希望你得到我说的话