ダニエル:
静的変数の間に新しい電子メールを追跡し続けるスレッドがありますtracking
本当ですが。それは次のようになります。
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
tracking = true;
while(tracking){
//check emails
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
私は基本的に設定していること、電子メールの追跡を停止する機能を実装tracking
falseに。
トラッキングはちょうどであるprivate static boolean
私は、これらのタスクを実行し、クラス内でのみ使用しています。
このアプローチは、すべての問題に私を導くことはできますか?
イワン:
同じ変数に複数のスレッドその読み取りと書き込みがあった場合は、同期を使用する必要があります(例えばAtomicBoolean
)。この特定のケースでは宣言するのに十分であるtracking
ようにvolatile
1つのスレッドでその変数に新しい値セットが別のスレッドで正しく表示されるように:
private static volatile boolean tracking;