ホームページ  >  記事  >  Java  >  マルチスレッドの 3 つの主な特徴は何ですか?

マルチスレッドの 3 つの主な特徴は何ですか?

王林
王林転載
2020-04-27 16:32:053141ブラウズ

マルチスレッドの 3 つの主な特徴は何ですか?

マルチスレッドには、次の 3 つの主要な特徴があります:

原子性、可視性、秩序性

1. アトムとは何ですか? Nature

つまり、1 つまたは複数の操作が完全に実行され、実行プロセスがいかなる要因によっても中断されないか、またはまったく実行されません。

非常に典型的な例は、銀行口座振替の問題です。

たとえば、口座 A から口座 B に 1,000 元を送金する場合、口座 A から 1,000 元を引くという 2 つの操作が必要です。 、アカウント B に 1,000 元を送金します。アカウント B に 1,000 元が追加されます。予期しない問題が発生しないように、これら 2 つの操作はアトミックである必要があります。

i = i 1 など、データを操作する場合にも同じことが当てはまります。これには、i の値の読み取り、i の計算、i の書き込みが含まれます。このコード行は Java ではアトミックではないため、マルチスレッド操作は間違いなく問題を引き起こすため、この機能を保証するために同期とロックも使用する必要があります。

(ビデオ チュートリアルの推奨: java ビデオ )

2. 可視性とは何ですか

複数のスレッドが同じにアクセスするとき変数が変更され、1 つのスレッドが変数の値を変更すると、他のスレッドは変更された値をすぐに確認できます。

2 つのスレッドが異なる CPU 上にあり、スレッド 1 が i の値を変更してメイン メモリに更新せず、スレッド 2 が i を再度使用する場合、i の値は同じでなければなりません。スレッド 1 は変数とは何の関係もありません スレッド 2 が認識しなかった変更は、可視性の問題でした。

3. 順序性とは?

プログラムの実行順序はコードの順序で実行されます。

一般に、プログラムの動作効率を向上させるために、プロセッサは入力コードを最適化する場合がありますが、プログラム内の各ステートメントの実行順序がコード内の順序と一致していることは保証されません。ただし、プログラムが最終的に実行されることは保証され、その結果はコードの順次実行の結果と一致します。以下の通り:

int a = 10; //语句1
int r = 2; //语句2
a = a + 3; //语句3
r = a*a; //语句4

並べ替えにより、2-1-3-4、1-3-2-4 の注文も実行する可能性がありますが、2-1-4-3 は絶対に不可能です。この依存関係が壊れているためです。

明らかに、並べ替えはシングルスレッド操作では問題を引き起こしませんが、マルチスレッドでは必ずしも問題を引き起こさないため、マルチスレッドでプログラミングする場合はこの問題を考慮する必要があります。

推奨チュートリアル: Java の入門

以上がマルチスレッドの 3 つの主な特徴は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。