ホームページ  >  記事  >  Java  >  Java マルチスレッド アプリケーション メソッドの完全な復号化

Java マルチスレッド アプリケーション メソッドの完全な復号化

黄舟
黄舟オリジナル
2016-12-15 10:04:501644ブラウズ

Java マルチスレッドは私たちが非常に頻繁に使用するものであり、継続的な学習の過程で多くの応用方法が存在します。以下でこれらの主要な方法を学びましょう。お役に立てれば。まずは具体的な手法の分類を見てみましょう。

Java マルチスレッド プログラムで一般的に使用されるメソッドには、run()、start()、wait()、sleep()、notify()、notifyAll()、yield()、join() などがあります。は同期する重要なキーワードです。これらのメソッドについては以下で説明します:

1. run() と start()

これら 2 つのメソッドはよく知られているはずで、並列処理が必要なコードを run() メソッドに置き、start() メソッドがスレッドを開始します。 run() メソッドは自動的に呼び出されます。これは Java のメモリ メカニズムによって指定されます。また、run() メソッドにはパブリック アクセス権限が必要で、戻り値の型は void です。

2. Keyword Synchronized

このキーワードは、もちろん、どのデータが共有データであるかを区別するために使用されます。各オブジェクトにはロック フラグがあり、スレッドがオブジェクトにアクセスすると、Synchronized によって変更されたデータは「ロック」され、他のスレッドがアクセスできなくなります。現在のスレッドがデータのこの部分にアクセスすると、ロック フラグが解放され、他のスレッドがそれにアクセスできるようになります。

1.public ThreadTestimplements Runnable

2.{

3.public synchronized void run(){

4.for(int i=0;i<10;i++)

5.{

6. System.out.println(" " + i);

7.}

8.}

9.public static void main(String[] args)

10.{

11.Runnable r1 = new ThreadTest ();

12.Runnable r2 = new ThreadTest();

13.Thread t1 = new Thread(r1);

14.Thread t2 = new Thread(r2);

15.t1.start() ;

16.t2.start();

17.}

18.}

上記のプログラムの i 変数は共有データではありません、つまり、ここでの Synchronized キーワードは機能しません。 2 つのスレッド t1 と t2 は 2 つのオブジェクト (r1、r2) のスレッドであるためです。オブジェクトが異なればデータも異なるため、2 つのオブジェクト r1 と r2 の i 変数はデータを共有しません。

コードを次のように変更すると Synchronized キーワードが機能します

19.Runnable r = new ThreadTest();

20.Thread t1 = new Thread(r);

21.Thread t2 = new Thread (r);

22.t1.start();

23.t2.start();

上記はJavaマルチスレッドの詳細な紹介です。その他の関連記事については、PHP中国語に注目してください。ウェブサイト (www.php.cn)!


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。