静的変数を共有するJavaスレッド

ダニエル:

静的変数の間に新しい電子メールを追跡し続けるスレッドがありますtracking本当ですが。それは次のようになります。

Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {
        try  {
            tracking = true;
            while(tracking){
                //check emails
             }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

私は基本的に設定していること、電子メールの追跡を停止する機能を実装trackingfalseに。

トラッキングはちょうどであるprivate static boolean私は、これらのタスクを実行し、クラス内でのみ使用しています。

このアプローチは、すべての問題に私を導くことはできますか?

イワン:

同じ変数に複数のスレッドその読み取りと書き込みがあった場合は、同期を使用する必要があります(例えばAtomicBoolean)。この特定のケースでは宣言するのに十分であるtrackingようにvolatile1つのスレッドでその変数に新しい値セットが別のスレッドで正しく表示されるように:

private static volatile boolean tracking;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=278613&siteId=1