大きな質問があります。同じオブジェクトをロックするために同じクラスから2つの異なるメソッドを同期させるには?次に例を示します。Javaはオブジェクトに同期します
public class MyClass extends Thread implements Observer{
public List<AnotherClass> myList = null;
public MyClass(List<AnotherClass> myList){
this.myList = myList;
}
public void run(){
while(true){
//Do some stuff
myList.add(NotImportantElement);
}
}
public void doJob{
for(int i=0; i<myList.size; i++){
ElementClass x = myList.get(i);
//Do some more stuff
}
}
}
質問は、私は(実行を停止することができる方法です)doJobを実行し、その逆されたときにはmyListをaccesingから?
これを想像してください:スレッドを開始し、リストに要素を追加し始めます。ランダムな瞬間に私はスレッドに参照を保持している別のクラスからdoJob()を呼び出します。
ロックをどうすればいいですか?ありがとう!
L.E.
私はロックの概念を理解しましたが、もう別の質問があります。
public static myList
のクラスがあり、そのクラスのインスタンスがの場合は、というインスタンスがあるとします。そのインスタンスから、Thread
のn
インスタンスを作成し、そのリストのすべての要素を取得し、それを使っていくつかのことを行います。
ここで、特定の時点でmyList
が更新されました。 myList要素をすでに処理していたスレッドではどうなりますか?アップデート中にmyList
へのアクセスをロックするにはどうすればよいですか?
両方の方法に
キーワードを同期を追加したり、前者は基本的にMyclass.classオブジェクトを使用していますが、それは微細なない
synchronized(Myclass.class) {
}
を使用することができますいずれか
@Grammin私はそれは問題ではないと言います。 – Mob
別の質問がある場合は、別の投稿を開くことをお勧めします。そうすればそれが見えます。 –