-6

マルチスレッド アプリケーションに問題があり、ボタン ストップ スレッドにバインドされています

thread = NULL;

その後、別のスレッドを開始します(同じ変数を使用)

thread = new Thread(this, "game");
thread.start();

新しいスレッドの後、スレッドはまだ null であり、なぜ助けてくれるのかわかりません。

4

1 に答える 1

0

これ以上の情報がなければ、以下は単なる憶測です。今後、詳細を示して、問題をデバッグするために行ったことを説明してください。

新しいスレッドの後、スレッドはまだ null であり、なぜ助けてくれるのかわかりません。

コンストラクターが a を返すことはできないため、null何か他のことが起こっています。

Thread thread = null;
thread = new Thread(this, "game");
// thread is guaranteed to be non-null here

2 つのスレッド間でスレッド フィールドを共有している可能性がありますか? たとえば、メイン スレッドがバックグラウンド スレッドを開始し、UI スレッドがそれを読み取ろうとしている可能性がありますか? その場合、volatileスレッド間で共有されるようにスレッドを作成する必要があります。

volatile Thread thread = null;

すでに揮発性である場合は、threadフィールドの別のインスタンスを扱っています。多分threadフィールドはとしてマークされるべきstaticですか?

于 2013-07-17T15:17:39.693 に答える