[ベース] Javaのマルチスレッド・プログラミング

1、スレッドおよびプロセス

プログラムは、静的なコードの一部です。
これは、動的処理実行(コード負荷、実行が完了した)プログラムです。
スレッドは、プロセスの実行は、複数のスレッドを生成することができ、処理実行部よりも小さいです。

2、Javaのマルチスレッド

マルチスレッドのサポート:Javaが大きな特徴です。マルチスレッドは、いくつかのアプリケーション実行の同時存在を指す割り込みスレッドは、より多くのシステムのオーバーヘッドを保存することができ再開する。
すべてのJavaアプリケーションは、デフォルトのメインスレッドを持っています。例えば、メイン方法(メインスレッド)、メインスレッドとスレッドを作成する場合、それは他のスレッドとなります。

3、スレッドのライフサイクル

新規 Threadクラスを使用するとそのサブクラスは、スレッドを表しています。
実行の呼び出しは()メソッドは、JVMに通知するために開始し、run()メソッドが実行されます。スレッドが作成されたスレッドのサブクラスである場合は、run()メソッド聞かせすることはできません前に、run()メソッドは、スレッドの実行開始メソッドの終わりではない、または例外(ないIllegalThreadStateException)が発生します書き換える必要があります。
割り込みスレッドの切り替えは、
休止状態にスリープ()メソッドを実行し、
待機状態に待機()メソッドの実装では、
ブロックされた状態を入力する操作を実行します。
死のスレッドがすべての作業、run()メソッドの終わりを完了するために
必須の終了を。

4、Threadクラス

スレッド作成
コンストラクタは、一般的に使用するスレッド(Runnableを対象)です。Runnableをパラメータには、インターフェイスのタイプです。
一般的な方法は、
(スタート)スレッドは準備ができて、スレッドを開始します。
ラン()の実行、実際の動作の完了。
スリープ(int型)睡眠、いくつかの時間のためのポーズ。
falseの場合、実行状態が真のIsAlive新しい状態であるとき、()(死の前に)
返します現在のスレッドcurrentThread()
への割り込み()スリープ中のスレッドキューを再目覚め、interruptException例外がスローされます

マルチスレッド

(1)スレッドクラスの継承、オーバーライドrun()メソッド
(2)、Runnableインタフェースを実現し、インターフェイスのrun()メソッドを実装する
(3)呼び出し可能インタフェースオーバーライドコール()メソッドを実装
推奨(2)

5、スレッドの同期

複数のスレッドのアクセスまたは(一つのスレッドに)変数を変更します。
スレッドAは、このメソッドを使用する場合、他のスレッドが完了を待ちたい、同期修正された方法を使用する必要があります。同期リソースのセキュリティを確保するためのメカニズム、および非同期は、プログラムの効率を向上させることができます。
同期動作を達成したい、各スレッドは、ロックオブジェクトを取得する必要があります。
実装された方法
(1)コード変更の同期ブロックを使用する方法。
(2)待機()メソッドの実行は、スレッドが待機が可能に他のスレッドが同期メソッドを使用するように、中断しました。
notifyAll()終了待ちで待機中のすべてのスレッドに通知します。
通知()終了を待っているスレッドに通知します。
(3)ロックインターフェースと実装クラスReentrantLockの、
方法:ロック()ロックを取得するためには、のtryLock()、lockInterrupttibly()
(1)及び(3)の両方を使用していません

スレッドを終了

この方法を停止し、方法を中断し、彼らは安全ではありません。
一般的な推奨事項を自動的スレッド終了するように。
スレッドスレッドデーモンユーザー
スレッドの統合は、法に参加し
、メインスレッドがその後のコード実行に参加し、runメソッドを終了した後。
セットのスレッドの優先順位

スレッドセーフ

、アクセス、共有リソースを避けタイムスケジュールを手配。
スレッドプールエグゼキュータ
固定長スレッドプールのスレッドプールのキャッシュ可能

公開された23元の記事 ウォン称賛24 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_41022866/article/details/103962668
おすすめ