マルチスレッドの基礎ポイント

######## -マルチスレッド概要- ############################
1.スレッドを達成する方法:[継承スレッドクラス実装のRunnableインターフェース]その
2静的プロキシ設計パターン
3.jdk1.8ラムダ式
4スレッド状態
5.スレッド優先
6.デーモンスレッド。
一般的な方法7.Threadスレッドクラス。
同期、非同期のスレッド8.
9.コンカレント・コンテナー。
10.デッドロック。

######## -知識のポイントをマルチスレッド- ##############################
1.スレッド方法を達成するために: [継承スレッドは、Runnableを実装]
run()メソッドを実装し、①継承スレッド。
使用スレッド:=新しい新しいmyThread MyThread MyThread(); myThread.start();
スレッドの特徴:

②、Runnableインタフェースを実現し、run()メソッドをオーバーライドする[使用]
Runnableを使用:新しい新しいスレッド(新しい新しいMyRunnable())スタート();.
Runnableを特徴:リソースを簡単に共有する|単一継承を避けてください|
③呼び出し可能とオーバーライドコール( )この方法は、同時juc [部]を前進しました

2.静的プロキシデザインパターン

  • パブリックインターフェイス:
  • 本当の役割:共通のインタフェースを実装
  • 役割演技:本当の役割に応じた方法を求めて、本当の役割を着信、共通のインタフェースを実装します。

3.jdk1.8のラムダ式

  • - 「ローカル内部クラス - 」匿名内部クラス[静的内部クラス:にプッシュ。 - 「jdk1.8のラムダ式]
  • 匿名内部クラスの簡素化。シンプルなスレッド本体の場合。新しいThread(() - > { System.out.printlnは( " スレッドのrunメソッドは、本体部材を実装しました。")})スタート();.
    *ケースラムダ式:
    パブリッククラスLambda1 {
    公共の静的な無効メイン(文字列[ ]引数){
    追加=(A、B) - > A + B;
    INT = A add.AddTO(10、23)である
    のSystem.out.println(A);
    }
}

interface Add{ public int AddTO(int a,int b);  }

4.スレッド状態
ここに画像を挿入説明

*新生児の状態:スレッドスレッド=新しい新しいスレッド();
*レディ状態:thread.start();ブロックされていない;収量()[]準備状態に、に、JVMの呼び出し;
*動作状態:CPUリソースを取得します。
待機[リソースを取ることはありません];;参加[彼らは自分のスレッドを実装することができます前に、他のスレッドを待って、待ち行列スレッドをジャンプして終了]; \待機を読む[オペレーティングシステムは行く- [>時間来て自宅や準備状態に入るフットプリント]スリープ:*インストールされた状態をブロックコール];
*死の状態:停止; []はお勧めしません;破壊; []はお勧めしません。説明:通常の仕上げまたは停止する雄ねじを制御することによって。

スレッドの優先順位

  • NORM_PRIORITY 5默认| MIN_PRIORITY 1 | MAX_PRIORITY 10
  • スレッドの優先度を取得します。Thread.currentHread()getPriority();.
  • 設定された優先度:thread.setPriority(Thread.MIN_PRIORITY)。

6.デーモンスレッド[]。
*設定デーモンスレッドとしてスレッド
スレッドスレッド新しい新しいT =(新新神());
t.setDaemon(真の); //セットデーモンスレッド
t.start();

一般的な方法7.Threadスレッドクラス。

  • Thread.currentThread()のisAlive();. //は生きています
  • Thread.currentThread():現在のスレッド

8.スレッド同期、非同期

*使用同時実行制御に同期したアプローチ:
同期メソッドpublic syncronizde無効メソッド(int型の年齢) {...}
シンクブロック:同期(OBJ){...}

  • ①②練習問題は、映画のチケットは、チケットを買う買います

9.コンカレント・コンテナー

  • 同時同期ロックを来るCopyOnWriteArrayListとコンテナ:CopyOnWriteArrayListとリスト=新しいCopyOnWriteArrayListと();

10.デッドロック

  • 過度の同期、デッドロックが発生します。一般的な同期保持複数のオブジェクトロック。
  • 回避デッドロック:同じコードブロックで、複数のオブジェクトがロックを保持していないが。
  • デッドロックのケースを書きます。以下のような:口紅と鏡。

11.同時コラボレーション、生産者、消費者モデル。

*チューブ義理の[コンテナ]:マルチスレッドの作成者|消費者をマルチスレッド|バッファ|データ[パン]
*は、同法[識別子]点灯:
提供するJavaオブジェクトに*を:
wait()を[呼び出し、現在のスレッドを待機させ、一定時間待機する]現在のスレッド]を待つ(長いタイムアウト)リードを通知したりのnotifyAllが放出する
] [)] [()のnotifyAllを(通知

マルチスレッド12.高度なトピック

マルチスレッド、タイミングスケジューリング:タイマTimerTaskを


クオーツ[タスク]のフレームワーク


[コマンド] HappenBefore転位
-------------------------

揮発性[可視でデータの同期を確保するために使用されます。しかし、保証アトミックは、軽量で同期されていません。揮発性の回避命令並び替え]
----------------
DCL単一要素認証モード[+]揮発性の回避命令を並べ替えます
-------------- -
ThreadLocalの【独立した空間は、各スレッドに割り当てることができます。取得/セット/ initialVaule方法]があります
InheritableThreadLocal [開始点を見つけるためにデータの継承されたコンテキストは]

----------------------
リエントラントロック原理は計算機を使用し続けることができます[達成] +
-------------
CAS [比較およびスワップのAtomicIntegerストック=新規のAtomicInteger(5) ; ]

公開された20元の記事 ウォンの賞賛0 ビュー1208

おすすめ

転載: blog.csdn.net/jinhuding/article/details/104837186