問題タブ [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.

0 投票する
3 に答える
1632 参照

java - Java スレッドの内部

私はかなり長い間Javaの内部を研究してきました。Java でスレッド化/ロックがどのように行われるかを学び、理解したいと思っています。

したがって、同期されたメソッドまたは同期されたブロックにアクセスするには、スレッドは最初にオブジェクトのロックを取得する必要があります。さて、ここに私がもう少し光が必要なものがあります。

では、スレッドがオブジェクトのロックを取得するたびに、内部でセマフォの値をインクリメントするのでしょうか? 答えが「はい」の場合は、このシナリオを見てみましょう。

したがって、スレッド 1 とスレッド 2 の 2 つのスレッドがあるとします。スレッド 1 が最初にmethod_1に入り、最初に xyz のロックを取得したと仮定します。そして、Thread2が method_2に入り、xyz のロックを取得しようとします。何が起こるか?(私に言わせれば、Thread2 は、オブジェクトのセマフォ値が 0 より大きいことが判明したため、ブロックされます)

私の推論が正しいかどうか教えてください。

0 投票する
3 に答える
6612 参照

java - Javaで同期ステートメントを中断するにはどうすればよいですか?

同じオブジェクトで同期したい2つのスレッドがあります。特定の条件が満たされた場合、TheadはスレッドAを中断できる必要があります。Bこれは、2つのスレッドが実行する/実行する必要があることの擬似コードです。

A:

B:

これが私が解決できない状況です:

  • スレッドAは共有リソースを取得し、いくつかのことを行います。
  • その間、スレッドBは同期ブロックに到達しA、共有リソースを解放するのを待ちます。
  • スレッドAは、作業中に、スレッドBが共有リソースを持つべきではないことに気づき、スレッドを中断しようとしBます。しかし、スレッドはすでにスローされる可能性Bのあるポイントを超えています。InterruptedException

私の質問は、スレッドが何かを待っている間にスレッドを中断する方法はありますsynchronizedか?

0 投票する
4 に答える
611 参照

java - 多くの読者、1人の作家:これを同期する必要がありますか?

getメソッドにアクセスする多くのスレッドとsetListメソッドにアクセスするスレッドが1つだけの場合、これを同期する必要がありますか?

読者が古いデータを取得してもかまいませんが、データは一貫している必要があります。

ジャニング

0 投票する
2 に答える
1345 参照

java - 静的クラスをロック(同期)する方法は?

情報を含むいくつかのベクトルを保持する静的クラスを作成しています。誰かがベクターを編集または読み取っている場合にクラスがロックされるように、同期させる必要があります。

これを行うための最良の方法は何ですか?

次のようにクラス内で同期される関数があれば十分ですか。

前もって感謝します :)

0 投票する
1 に答える
760 参照

text-editor - 同期スクロールとスペル チェック機能を備えたテキスト エディター

次の 2 つの機能を備えたテキスト エディターを探しています。 - 同期スクロール: 2 つのタブを並べて表示し、両方を同時にスクロールできます。- 入力時のスペル チェック (ハイライト、下線の単語、オンザフライでのスペル チェック) 同期スクロールのこの機能のために、私は現在 Notepad++ を使用していますが、スペル チェックのサポートは弱いです。同期スクロールの私の主な用途は、両方の言語のテキストを表示してテキストを翻訳することなので、これらの機能を備えたワープロを見つけることさえ気にしません。

ご提案をお待ちしております。

0 投票する
3 に答える
959 参照

java - ローカル ファイル システム (Java) で永続化された ACID トランザクションを取得する簡単な方法は何ですか?

私は小さな (Java) プロジェクトに取り組んでおり、Web サイトは登録済みの電子メール アドレスの (できればカンマ区切りの) リストを維持し、アドレスがリストに含まれているかどうかを確認できる必要があります。ホスティングやサーバーのデータベース サポートの欠如を制御することはできません。

Prevayler は良い解決策のように思えましたが、この Web サイトはゴースト タウンであり、あるべきところからサンプル コードが欠落しているため、少し用心しています。

このようなタスクには、他にどのようなオプションが推奨されますか?

0 投票する
4 に答える
5129 参照

python - Djangoでのスレッド同期

Djangoで同期されたJavaのように重要な領域をブロックする方法はありますか?

0 投票する
4 に答える
3815 参照

java - Java メモリ モデル: 並べ替えと同時ロック

Java メモリ モデルではsynchronize、同じモニター上で同期するブロックが、それらのブロック内で変更された変数に対してビフォア アフター リレーションを強制することが義務付けられています。例:

この場合x==true、スレッド A がそのブロックをすでに通過している限り、スレッド B が参照することが保証されますsynchronized。現在、より柔軟な (そして高速であると言われている) ロックjava.util.concurrent、特にReentrantReadWriteLock. したがって、例は次のようになります。

編集:マット bで指摘されているように、コードを誤って変換したため、例が壊れていました。次のように修正されました。

しかし、メモリー・モデルの仕様の中で、そのようなロックが必要な順序付けを暗示しているというヒントは見たことがありません。実装を調べると、内部の volatile 変数へのアクセスに依存しているようですAbstractQueuedSynchronizer(少なくとも太陽の実装では)。ただし、これは仕様の一部ではなく、さらに、不揮発性変数へのアクセスは、これらの変数によって与えられるメモリバリアによってカバーされるとは実際には考えられていませんよね?

だから、ここに私の質問があります:

  • synchronized「古い」ブロックと同じ順序を想定しても安全ですか?
  • これはどこかに文書化されていますか?
  • volatile 変数にアクセスすると、他の変数のメモリ バリアになりますか?

よろしく、ステフェン

--

やなもんさんへのコメント:

次のコードを見てください。

私が理解したことから、メモリバリアは2番目の出力に2を表示するように強制しますが、他の変数への影響は保証されていません...? では、これを volatile 変数へのアクセスとどのように比較できますか?

0 投票する
3 に答える
1107 参照

android - 2つのAndroidスレッドと同期されていないデータ

私は(おそらく愚かな)質問があります:

2つのスレッドを使用している場合、1つはフロートを書き込み、もう1つはこのフロートを永続的に読み取ります。私の質問は、それらを同期しないと何が悪化する可能性があるかということです。一部の値は、書き込み操作ごとに少しだけ切り替わるため、正しくない場合でも問題はありません。現時点ではこの方法でアプリケーションを実行していますが、問題はないので、何が悪化する可能性があるのか​​知りたいですか?

読み取り/書き込みの競合により、54321に書き込まれる12345のような数値が発生し、同時に赤がたとえば54345と表示されます。または何か悪いことが起こる可能性がありますか?(コードをできるだけ速く保つために同期を使用したくない)

0 投票する
3 に答える
522 参照

java - Java の同期メソッド

質問があります。次のコードで、スレッドが wait ステートメントでブロックされ、別のスレッドが foo() を実行しようとすると、hello world メッセージが出力されますか? なぜ?