我有一个应用程序,我需要阻止所有网络活动,直到完成一个特定的过程。之后,所有线程都可以随意执行网络活动。阻挡对我来说是一个弱点,我不确定我是否做得对。我相信我所拥有的将会发挥作用,但我的直觉告诉我,我不应该这样做。
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();
}
}
答案 0 :(得分:0)
目前您正在使用“忙碌的等待”。用那个"而(...)继续"
一个更好的解决方案很可能是将你的任务作为runnables和
将它们放在一个管理器类中,将回调传递给第一个任务并将每个新任务添加到管理器内的列表中(即回调没有返回时),一旦回调返回遍历列表并开始每个runnable与它自己的线程。
当然,解决方案仅适用于我所能解决的问题,如果它适合添加更多细节\代码,以便我能更好地理解你想要解决的问题。