Java で内部的にマルチスレッド化されたクラスを作成しています。これは、別のスレッドを初期化して使用してプライベート フィールドを更新するという点です。
class Foo {
private volatile Byte channel = new Byte(0);
private volatile Byte mode = new Byte(0);
public Foo() {
Thread t = new Thread(new UpdateFields());
t.setDaemon(true);
t.start();
}
public Byte getChannel() {
return this.channel;
}
public Byte getMode() {
return this.mode;
}
private class UpdateFields implements Runnable {
@Override public void run() {
Byte data[];
//get new data[]...
channel = data[0];
mode = data[1];
}
}
}
私の質問は、このクラスは内部的にスレッドセーフですか? Byte などの不変オブジェクトに関して私が読んだことから、それらは本質的にスレッドセーフであるということです。
編集:フィールドにデフォルト値を追加