グローバル変数であるIntegerクロックを持つクラスがあり、0に初期化されています。スレッドを開始するいくつかのスレッドコンストラクタに 'clock'を渡します。スレッド内で 'clock'の増分が見えるかもしれませんが、呼び出しプロセスでは 'clock'は常に0です。Integerはオブジェクトで、オブジェクトは参照渡しであるため、 'clock'の変更が見られるはずですどこにでも。これは当てはまりませんか?スレッドで参照渡しで整数を渡す
答えて
使用可変であるInteger
のラッパーを作成することです。
int
アトミックに更新される値。原子変数のプロパティの説明については、java.util.concurrent.atomic
パッケージ仕様を参照してください。AtomicInteger
は、アトミックインクリメントカウンタなどのアプリケーションで使用され、Integer
の代わりに使用することはできません。しかし、このクラスはNumber
を拡張して、数値ベースのクラスを扱うツールやユーティリティによって一様にアクセスできるようにします。
私は知らなかった別の図書館が存在しました... –
これはライブラリではありません。これはJava SEの一部です。 –
Integer
は不変オブジェクトです。その値を別のスレッドから変更することはできません。スレッド内で使用するときはfinal
と宣言しなければならないので、変数を再割当てすることはできません。
これを回避する方法はAtomicInteger
代わりのInteger
class MutableInteger {
private int integer;
synchronized void setInteger(int integer) { ... }
synchronized int getInteger() { ... }
}
- 1. 予期せず整数を参照渡しですか?
- 2. 参照渡しと参照渡し
- 3. std :: thread渡しで参照渡しコピーコンストラクタ
- 4. 値渡しと参照渡しJavaScriptで
- 5. 値渡し値渡し参照渡し
- 6. は参照で引数を渡すと
- 7. javaで参照渡し?
- 8. 参照でベクトルを渡す
- 9. フォームオブジェクトを参照渡しに渡す
- 10. オブジェクト参照を静的ヘルパーメソッドに渡す複数のスレッド
- 11. CComPtr参照渡し
- 12. 参照渡しと値渡し。 C++
- 13. PHPエクステンションに参照渡し変数を渡す
- 14. Javascriptが参照渡しでオブジェクトを渡す
- 15. Cポインタを参照渡し?
- 16. JavaおよびC++は値渡しで参照渡しする
- 17. Mutexオブジェクトは参照渡しですか?
- 18. ポインタは参照渡しですか? (サニティチェック)
- 19. ctypesと関数への参照渡し
- 20. 参照でポインタをC++で渡す
- 21. オブジェクト参照を関数に渡す
- 22. 参照渡しとC++とJavaで値渡し
- 23. C#の中括弧で値渡しと参照渡し
- 24. C側の参照渡し?
- 25. スキームR5RS:参照渡し
- 26. C++参照渡し:エラー:コール
- 27. 参照渡しのパラメーターパック
- 28. 参照渡しの疑問
- 29. 参照渡しのメリット? (PHP)
- 30. pthreadの参照渡し値
Javaは*値渡し*特に*参考値*です。しかしそれとは別に、 'Integer'(実際には、すべてのautoboxクラス)は不変です。それを変更することはできません。 –