在java中阻塞

时间:2016-03-25 22:46:37

标签: java android blocking

我有一个应用程序,我需要阻止所有网络活动,直到完成一个特定的过程。之后,所有线程都可以随意执行网络活动。阻挡对我来说是一个弱点,我不确定我是否做得对。我相信我所拥有的将会发挥作用,但我的直觉告诉我,我不应该这样做。

public static class BlockingClass implements ReentrantLock
{
    private static BlockingClass sBlockingClass = new BlockingClass();

    static
    {
        sBlockingClass.lock();
    }


    public void ProcessThatNeedsToWait()
    {
        while(sBlockingClass.isLocked());

        Continue();
    }


    public void ProcessThatNeedsToBeWaitedFor()
    {
         DoInitWork();

         sBlockingClass.unlock();
    }
}

1 个答案:

答案 0 :(得分:0)

目前您正在使用“忙碌的等待”。用那个"而(...)继续"
一个更好的解决方案很可能是将你的任务作为runnables和 将它们放在一个管理器类中,将回调传递给第一个任务并将每个新任务添加到管理器内的列表中(即回调没有返回时),一旦回调返回遍历列表并开始每个runnable与它自己的线程。 当然,解决方案仅适用于我所能解决的问题,如果它适合添加更多细节\代码,以便我能更好地理解你想要解决的问题。