単一のスレッドは、スレッドが1つしかなく、同じリソースをつかむ複数のスレッドがないため安全です。
コード例:
public class singlethread {int num = 10; public void add(){while(num <13){num ++; try {shood.sleep(1000);} catch(exceps.out.println( "interrust");} system.out.println(num);}} public void main()boid main() //現在実行中のスレッドオブジェクトスレッドを取得します。SetName( "シングルスレッド"); //スレッドの名前を変更system.out.println(thread.getname()+"running"); singlethread st = new singlethread(); st.add();}}}マルチスレッド安全性、同期化された同期コードブロック
同期(オブジェクト){}; //同期コードブロック
同期されたreturn値メソッドname(){}; //同期メソッド
クラス1 {int num = 10; public void add(){synchronized(this){// sync code blocks、synchronizationメソッドは、同期add(){}; num ++; try {thread.sleep(1000); } catch(arternedexception e){system.out.println( "挿入"); } system.out.println(num); }}} class 2つの実装{one one = new one(); @Override public void run(){one.add(); // add methodを呼び出す}} public class synch {public static void main(string [] args){two two = new Two();スレッドT1 =新しいスレッド(2); // 3つの子スレッドスレッドT2 =新しいスレッド(2つ)を作成します。スレッドT3 =新しいスレッド(2); t1.start(); t2.start(); t3.Start(); }}注:同期されたキーワードの削除結果の違いを観察してください!
通常の操作結果:
11
12
13