2

スレッドを介して実行される実行可能なコードがいくつかあります。スレッドは複数のコードによって実行されます。特定の時点で実行可能なスレッドが1つだけであることを確認するにはどうすればよいですか。

スレッドの開始時にtrueで、スレッドの終了時にfalseになるブール値を使用してみましたが、役に立ちませんでした。

何か案は?

4

2 に答える 2

3

-まず、複数のスレッドがアクセスするオブジェクトのリソースです。

-一度に 1 つのスレッドのみがそのリソースにアクセスできるようにしたい場合は、次のようにすることができます* : *

1.スレッド数が 1 の場合に使用java.util.concurrent.Semaphoreするため、一度に 1 つのスレッドのみがそのリソースにアクセスできます。

例えば:

Semaphore s = new Semaphore(1);

2.を使用することもできます。SingleThreadExecutorこれは、1 つのタスクを完了してから 2 番目のタスクに進むなどです。したがって、同期を使用する必要はありません。

于 2012-11-28T10:30:55.863 に答える
2
private class MyThread extends Thread
{
    private static Lock lock = new ReentrantLock();

    public void run()
    {
        if (MyThread.lock.tryLock())
        {
            try
            {
                // TODO something
            }
            finally
            {
                MyThread.lock.unlock();
            }
        }
    }
}
于 2012-11-28T10:09:42.790 に答える