次のようなクラスの静的配列があります。
public class Entry {
private String sharedvariable1= "";
private String sharedvariable2= "";
private int sharedvariable3= -1;
private int mutablevariable1 = -1
private int mutablevariable2 = -2;
public Entry (String sharedvariable1,
String sharedvariable2,
int sharedvariable3) {
this.sharedvariable1 = sharedvariable1;
this.sharedvariable2 = sharedvariable2;
this.sharedvariable3 = sharedvariable 3;
}
public Entry (Entry entry) { //copy constructor.
this (entry.getSharedvariable1,
entry.getSharedvariable2,
entry.getSharedvaraible3);
}
....
/* other methods including getters and setters*/
}
プログラムのある時点で、このオブジェクトのインスタンスにアクセスし、上記のコピーコンストラクターを使用してそのコピーを作成します。次に、上記の2つの可変変数の値を変更します。このプログラムはマルチスレッド環境で実行されています。 ご注意ください。すべての変数は、スレッド化の前に初期値で設定されます。 プログラムがスレッド化された後でのみ、コピーが作成され、変数が変更されます。私は静的オブジェクトを読み取り、書き込みを行わず(intとmutableは読み取りのみですが、共有変数3も)、静的オブジェクトのコピーにのみ変更を加えているため、スレッドセーフであると信じています(およびコピーはスレッド内で作成されています)。しかし、ここで私の考えが正しいことを確認したいと思います。
誰かが私がしていることを評価してもらえますか?