[英]Blocking in java
我有一个应用程序,在该应用程序中,我需要阻止所有网络活动,直到完成一个特定的过程为止。 之后,所有线程都可以随意执行网络活动。 封锁对我来说是一个弱点,我不确定自己是否做得对。 我相信我所拥有的会起作用,但是我的直觉告诉我,我不应该这样。
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();
}
}
现在你正在使用“忙碌的等待”,“while(...)继续”
更好的解决方案是尽快将您的任务实现为可运行对象,并将其置于一个经理类中,将回调传递给第一个任务,并将每个新任务添加到经理内部的列表中(即,回调尚未返回时)当回调返回遍历列表并使用它自己的线程开始每个runnable。
当然,这个解决方案仅适用于我所能解决的问题,如果它适合添加一些细节\\代码,那么我可以更好地理解你想要解决的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.