我有一个应用程序,需要阻止所有网络活动,直到完成一个特定的过程为止。在那之后,所有线程都应该可以随意执行网络活动。封锁对我来说是一个弱点,我不确定自己是否做得对。我相信我所拥有的会起作用,但是我的直觉告诉我,我不应该这样。
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();
}
}
最佳答案
按照现在,您正在使用“忙于等待”和“同时(...)继续”
更好的解决方案将是将您的任务作为可运行对象执行,并且
将它们放在一个管理器类中,将回调传递给第一个任务,并将每个新任务添加到管理器内部的列表中(也就是说,回调尚未返回时),只要回调返回遍历该列表并以它是自己的线程。
当然,该解决方案仅适用于我从您所面临的问题中可以理解的内容,以防万一,请添加更多详细信息\代码,以便我可以更好地理解您要解决的问题。