この記事では、参照用のJavaマルチスレッドの実行可能な方法を実装する特定の方法を共有しています。特定のコンテンツは次のとおりです
(i)ステップ
1.実行可能なインターフェイスを定義および実装します
2。実行可能なインターフェイスで実行方法を上書きし、スレッドが実行したいコードを実行するコードを保存します。
3.スレッドクラスを通してスレッドオブジェクトを作成します。
4.スレッドクラスのコンストラクターに実際のパラメーターとして、実行可能なインターフェイスのサブクラスオブジェクトを渡します。
Runnable Interfaceサブクラスオブジェクトのコンストラクターがスレッドに渡されたのはなぜですか?カスタムメソッドが属するオブジェクトは、実行可能なインターフェイスのサブクラスオブジェクトであるためです。
5.スレッドクラスの開始方法を呼び出してスレッドを起動し、実行可能なインターフェイスサブクラス実行方法を呼び出します。
(ii)スレッドセーフ共有コードブロックの問題
目的:プログラムにセキュリティの問題はありますか?もしそうなら、それを解決する方法は?
質問を見つける方法:
1.どのコードがマルチスレッドランニングコードであるかを特定します。
2。明確にデータを共有します
3.マルチスレッドコードのどのステートメントが動作してデータを共有するかを明確にします。
クラスバンク{private int sum; public void add(int n){sum+= n; System.out.println( "sum ="+sum); }} class cus実装runnable {private bank b = new Bank(); public void run(){synchronized(b){for(int x = 0; x <3; x ++){b.add(100); }}}} public class bankdemo {public static void main(string [] args){cus c = new cus();スレッドT1 =新しいスレッド(c);スレッドT2 =新しいスレッド(c); t1.start(); t2.start(); }}または、2番目の方法で、修正方法で同期した同期コードを配置します。
クラスバンク{private int sum; public synchronized void add(int n){object obj = new object(); sum+= n; try {thread.sleep(10); } catch(Exception e){e.printstacktrace(); } system.out.println( "sum ="+sum); }} class cus実装runnable {private bank b = new Bank(); public void run(){for(int x = 0; x <3; x ++){b.add(100); }}} public class bankdemo {public static void main(string [] args){cus c = new cus();スレッドT1 =新しいスレッド(c);スレッドT2 =新しいスレッド(c); t1.start(); t2.start(); }}要約:
1.クラスで対処する問題と方法を定義します。
2。既に定義されているクラスで問題を処理するためにメソッドを呼び出すために実行可能に実装できるクラスの実行方法を書き直します。
同期ブロックの問題を処理するために、クラスのオブジェクトを受け入れます。
3.メインメソッドで実行する複数のスレッドを定義します。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。