-1

スレッドの外部からスレッド変数にアクセスする方法、メインプログラムまたはサービスからアクセスしたいスレッド内にハッシュマップがあります。

public class Sample {

class Thread {

//private synchronized hashmap declared here
}

}

他のクラスのスレッドで宣言されたハッシュマップにアクセスしたい場合は、クラス Abc とします。

4

1 に答える 1

0

複数のスレッドがデータにアクセスする際の本当の問題は、同期です。データを含むマップがある場合は、それをConcurrentHashMapにして、アクセスできるように配置します。これで、マップ内のデータにアクセスできるようになりました。コードには、より多くの同期を必要とする他の依存関係が存在する可能性がありますが、少なくともマップ内のデータへのアクセスは安全であることに注意してください。

更新:あなたの場合、私は次のようにします:

public class Sample {
    Map mMyMap = new ConcurrentHashMap();

    void foo() {
        // Access from here
    }

    class Thread {
        // And from here
    }
}

プライベートにすることはできますが、この質問の範囲外である内部クラスとプライベートについては、多くのことが言えます。

于 2012-11-20T14:13:30.580 に答える