キーワードを使用するのはこれが初めてsynchronized
なので、正確にどのように機能するかはまだわかりません。複数のスレッドからアクセスしたいリストがあるので、次のようにします。
players = Collections.synchronizedList(new ArrayList<Player>(maxPlayers));
players.add()
ここで、 と同時に呼び出していないことを確認したいplayers.get()
ので、同期ステートメントを使用する必要があると思います (メソッド A と B は同時に呼び出すことができます)。
public void A() {
synchronized(players) {
players.add(new Player());
}
}
public void B(String msg) {
synchronized(players) {
for(int i = 0;i<players.size();i++) {
players.get(i).out.println(msg);
}
}
}
これは正しい手順ですか?そうでない場合、代わりに何をすべきですか?