如何使用synchronized发送命令?

时间:2012-12-14 03:42:58

标签: android synchronized

我有一个关于串口或蓝牙的类。这个类有一个叫做的方法 CommandSender(String CommandText);

有很多表单或线程可以调用该方法。我该怎么做: 如果方法调用一次立即执行该方法, 如果多个表单或线程调用该方法,则只需在调用之前/之后休息2秒。

请提供代码详情。 太棒了!

1 个答案:

答案 0 :(得分:0)

你可以使用

public synchronized void CommandSender(String CommandText) { }

但这不会提供您需要的2秒睡眠。如果你确实需要2秒睡眠,那么你必须自己实施。

public class BluetoothUtils
{
    private static boolean isLocked = false;

    public void CommandSender(String CommandText)
    {
        while(isLocked)
        {
            Thread.sleep(2000); // sleep for 2 seconds
        }
        CommandSenderInternal(CommandText);
    }

    private synchronized void CommandSenderInternal(String CommandText)
    {
        isLocked = true;
        try
        {
            // Your implementation here
        }
        catch(Exception ex)
        {

        }
        finally
        {
             isLocked = false;
        }
    }
}