繁体   English   中英

在java中阻塞

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM