問題タブ [synchronized]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 空の同期ブロックが正しいスレッド セマンティクスを実現できるのはどのような状況ですか?
コード ベースのFindbugsレポートを調べていたところ、トリガーされたパターンの 1 つが空のsynchronziedブロック (つまりsynchronized (var) {}) でした。ドキュメントには次のように書かれています:
空の同期ブロックは、ほとんどの人が認識しているよりもはるかに微妙であり、正しく使用するのが難しく、空の同期ブロックは、あまり工夫されていないソリューションよりも優れたソリューションになることはほとんどありません。
私の場合、ブロックの内容がコメントアウトされていたために発生しましたが、synchronizedステートメントはまだそこにありました。synchronized空のブロックが正しいスレッド セマンティクスを実現できるのはどのような状況ですか?
delphi - 同じクラスでグローバル変数を設定するルーチンの適切な命名規則は何ですか?
Code Complete (Chapter 7, Section 3) は、良い関数はそれが返す値にちなんで命名されるべきであり、クラス内の適切な手続き名はそれが何をするかについて命名されるべきであると述べています.
Delphi(2009年より前)で同期メソッドを作成するとき、それらを使用してグローバル変数を設定する必要がある場合があります。これは一見悪いプログラミング手法ですが、変数を渡すことができないため、1回必要です。プロパティメソッドに使用するため、それらを「Get」または「Set」と呼びたくありません。
これらのより良い命名規則を持っている人はいますか?
java - 同期されたシングルトンの適切な使用法?
ですから、プログラミングやデザインをブラッシュアップするために、趣味のプロジェクトを構築することを考えています。
これは基本的にマルチスレッドのWebスパイダーであり、同じデータ構造object->intを更新します。
したがって、これにデータベースを使用するのは間違いなくやり過ぎです。私が考えることができるのは、データ構造を格納するために使用されるスレッドセーフなシングルトンだけです。http://web.archive.org/web/20121106190537/http://www.ibm.com/developerworks/java/library/j-dcl/index.html
私が検討すべき別のアプローチはありますか?
combobox - 同期コンボボックス
1 つのインデックスを変更すると、もう 1 つのインデックスが自動的に変更されるように、2 つの同期されたコンボボックスを取得するにはどうすればよいですか。
java - 「同期」とはどういう意味ですか?
synchronizedキーワードの使用法と意味についていくつか質問があります。
synchronizedキーワードの意味は何ですか?- メソッドはいつすべき
synchronizedですか? - プログラム的および論理的にはどういう意味ですか?
java - Java DAO で同期を使用すると問題が発生しますか?
Java DAO のメソッドで 'synchronized' キーワードを使用すると、Web アプリケーションで使用すると問題が発生しますか?
ここに示すように、リソースの競合を回避するためにメソッドを同期する必要があるマルチスレッドのスタンドアロン アプリケーションがあるため、質問します。
私が懸念しているのは、かなりの数の人がアプリケーションを使用しようとすると、同期されたメソッドがブロックされ、アプリケーション全体が遅くなることです。
DAO にエンティティ マネージャーを提供する、Spring が注入された JPA エンティティ マネージャー ファクトリを使用しています。技術的には、DAO レイヤーを削除して、クラスにエンティティ マネージャー ファクトリを直接呼び出させることもできますが、DAO が提供する分離を楽しんでいます。
また、接続されたエンティティ ORM オブジェクトをスレッド間で受け渡さないように細心の注意を払っていることにも注意してください。DAOへのアクセス時にリソース競合エラーが発生するのではないかと推測しています。複数のスレッドが同時に進行していて、非アトミックな方法でデータベースを永続化または読み取りしようとしていると思います。
この場合、DAO を使用すると、助けよりも害が大きくなりますか?
私が質問から外した重要な情報は、DAO がシングルトンではないということです。その詳細を含めるのに十分明快に考えていたなら、そもそもその質問をしなかったでしょう.
私の理解が正しければ、Spring はそれを使用するクラスごとに DAO クラスの新しいインスタンスを作成します。したがって、バッキング エンティティ マネージャーは各スレッドに固有である必要があります。Rob H が答えたように、ここで重要なことは、エンティティ マネージャーを共有しないことです。
ただし、同期を削除するとエラーが発生する理由がわかりません。
このスレッドによると、 @PersistenceContext アノテーションはスレッドセーフな SharedEntityManager を作成します。したがって、シングルトン DAO を作成できるはずです。
java - Java 同期とスレッド
Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。
共有オブジェクト:
スレッド 1:
スレッド 2:
呼び出しクラス:
時折、"In Libya Thread congo cool"
決して起こらないはずのことがわかります。私が期待するのは:
"In Libya Thread libya awesome"
"In Congo Thread congo cool"
私はそれらが混在することを期待していません。
java - Java同期の問題
Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。
共有オブジェクト:
スレッド 1:
スレッド 2:
呼び出しクラス:
時折、絶対に起こらないはずの「In Libya Thread congo cool」が表示されます。私が期待するのは、「リビアでスレッド リビア 素晴らしい」「コンゴ スレッドでコンゴ クール」だけです。
私はそれらが混在することを期待していません。
java - Java スレッド共有オブジェクトの同期の問題
Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。
共有オブジェクト:
スレッド 1:
スレッド 2:
呼び出しクラス:
時折、絶対に起こらないはずの「In Libya Thread congo cool」が表示されます。私が期待するのは、「リビアでスレッド リビア 素晴らしい」「コンゴ スレッドでコンゴ クール」だけです。
私はそれらが混在することを期待していません。
java - Javaの同期メソッドと同期ブロックの違いは何ですか?
Javaの同期メソッドと同期ブロックの違いは何ですか?
私はネットで答えを探していました、人々はこれについてとても確信が持てないようです:-(
私の考えでは、同期ブロックがスコープ内でよりローカライズされている可能性があり、したがってロックの時間が短くなることを除いて、2つの間に違いはありませんか?
そして、静的メソッドのロックの場合、ロックは何で行われますか?ロックオンクラスの意味は何ですか?