特定のプロセスが完了するまで、すべてのネットワークアクティビティをブロックする必要があるアプリがあります。その後、すべてのスレッドは自由にネットワークアクティビティを実行する必要があります。ブロッキングは私にとって弱点ですが、私が正しくやっているかどうかは不明です。私は私がしていることはうまくいくと信じていますが、私の腸の本能は私にこのようにしてはいけないと言います。今1として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();
}
}
私は 'CountDownLatch'のような' java.util.concurrent'クラス(http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html)を使います。 – CommonsWare
ネットワークへのアクセス方法の詳細を入力できますか?おそらく、これは、特別なスレッドが接続を獲得するときにネットワーク接続を取得することをブロックするConnectionPoolを実装するソリューションです。 –
@CommonsWare私はjava.util.concurrent.Phaserを使いました。 onAdvanceで、私は基本的にちょうど{最初のスレッドが完了しました}を返す、正しい方向に私を指してくれてありがとう!^_^ – KairisCharm