Javaスレッドの基礎知識(基本)

スレッドのいくつかの基本的な知識、私はスレッドを理解しているだけの人を助けたいと思います。欠点は指摘したいと思っています。

基本的な記事:
1つ:スレッドとは?
軽量プロセス(LWP)と呼ばれることもあるスレッドは、 プログラム実行フローの最小単位です スレッドは、プログラム内の単一の順次制御フローです。 プロセス内の 比較的独立したスケジュール可能な実行ユニット は、システムに依存しないスケジューリングおよびディスパッチCPUの基本ユニットであり、実行中のプログラムのスケジューリングユニットを指します。

2:どのように達成するのですか?
Threadクラスを継承し、Runnableインターフェイスを実装して、runメソッドを書き換えます。
runメソッドとstartメソッドの違いは何ですか?
スレッドはrunメソッドを呼び出してrunメソッドのコードブロックを実行し、startメソッドはスレッドを開始します。
sleep()メソッドとwait()メソッドの違いは何ですか?
sleepメソッドとwaitメソッドの両方がスレッドに割り込み、スレッドをブロック状態のままにします。違い:waitメソッドはスリープの最後に呼び出されます。スレッドにオブジェクトがある場合、sleepメソッドはオブジェクトの監視を中止しませんが、waitはオブジェクトの監視を中止します。
notify()、notifyall()メソッド:
スレッドを起動し、notifyメソッドは指定されたスレッドを起動し、notifyallはすべてのスレッドを起動します。
wait()メソッドは、リソースの現在の所有権を放棄することを意味し、待機し、待機し、誰かが私に通知するまで待機してから、コードを実行します。 
notify()メソッドは、現在のスレッドがリソースの所有を放棄したことを示します。 
リソースの所有権を取得するように待機中のスレッドに通知しますが、待機状態から回復できるのは1つのスレッドのみです。 
次に、待機();の後、ステートメントの実行を続けます。 
notifyAll()メソッドは、現在のスレッドがリソースの所有権を放棄したことを示し、待機()メソッドに続くステートメントから実行を待機しているすべてのスレッドに通知します。 
3:スレッドセーフ
ロック、JVMメモリーモデル、ヒープドメイン内のデータ。
Keyword Synchronized;(コードやメソッドではなくオブジェクトロックを取得します。オブジェクトが異なるため、ロックも異なります)
同期はオブジェクトロックを使用することです。 静的装飾のない メソッドは、このメソッドを呼び出すオブジェクトをオブジェクトロックとして 使用し、静的装飾は オブジェクトのバイトコードをオブジェクトロック (クラス) として使用しますまたはこの説明:静的属性がインスタンス化される回数に関係なく 、アドレス空間は常に使用され ます。この静的に変更された属性を ロックする場合、複数のオブジェクトのロックと同等 です。スレッドは、アドレス空間のブロックにも同期的にアクセスします。
4:1つのロックを持つ1つのオブジェクト、複数のロックを持つ複数のスレッド。

5:同期と非同期オブジェクトロック:
同期:同期
同期の概念は 共有 です。「共有」という言葉を知っている必要があります。共有リソースでない場合、同期する必要はありません。つまり、ロックする必要はありません。同期の目的は、スレッドの安全のためです。セキュリティには2つの基本的な特性が必要 です。 原子性と可視性 です。
非同期:非同期
非同期性の概念は独立性であり、互いに制約を受けることはなく、2つの間に関係はありません。

元の記事を26件公開しました 賞賛されました0 訪問9935

おすすめ

転載: blog.csdn.net/weixin_38246518/article/details/78736366