java.util.concurrent.ConcurrentSkipListSetを使用するコードを、このクラスが利用できない環境(特にandroid 2.2)に移植することを検討しています。私はそれに代わるものを探しています。私の要件は次のとおりです。java.util.concurrent.ConcurrentSkipListSetの代替手段
- 基本的な「SET」の実装(のNavigableSetまたは類似を必要としない)
- 標準の操作は、スレッドセーフである必要があります(私は高いコールボリュームを持っていないので、ロックが許容される)
- 反復子のremove()操作を
任意のアイデアをサポートしている必要がありますConcurrentModificationExceptionが
Set s = Collections.synchronizedSet(new HashSet(...));
同期、これは限り、あなたはIteratorを使用して削除()操作以外の方法でセットを変更していないように動作するはずです:
ConcurrentSkipListSetのソースをコピーして、Android 2.2で動作するかどうか確認しましたか?あなたはそこで働いているコンコースのクラスのJDK5の基本を持っていますよね? – Thilo
これは実行可能ですが、ConcurrentSkipListSetは他のjava.util.concurrentクラスのpackage-privateメソッドを使用しているようです。どのくらいのクラスをコピーしなければならないのか分かりません。私はそこに代替の実装があることを望んでいましたが、そうでない場合は、これが最善の方法だと思います。 – Jules
ConcurrentSkipListSetのソースを見ると、以前気付いたことが思い出されましたが、HashSet(http://kickjava.com/src/java/util/HashSet.java.htm)のソースは非常に簡単で、 HashMapはすべての作業を実行します。私はこれをコピーし、ConcurrentHashMapを私が欲しいものにするかどうか疑問に思いますか? – Jules