스레드가 하나만 있기 때문에 단일 스레드는 안전하며 동일한 자원을 가져 오는 여러 스레드가 없습니다.
Code example:
공개 클래스 SingleTheRdread {int num = 10; public void add () {while (num <13) {num ++; try {thread.sleep (1000);} catch (예외 e) {system.out.println ( "인터럽트");} system.out.println (num);}} public static void main (streld) {thread (stlead). // 현재 실행중인 스레드 객체 스레드를 가져옵니다 .setName ( "단일 스레드"); // 스레드 rename system.out.println (ride.getName ()+"running"); SingleTheRdread st = new SingleTheRdead (); st.Add ();}}다중 스레드 안전, 동기화 된 동기화 된 코드 블록
동기화 된 (개체) {}; // 동기화 된 코드 블록
동기화 된 반환 값 메소드 이름 () {}; // 동기화 된 메소드
클래스 1 {int num = 10; public void add () {synchronized (this) {// 동기 코드 블록, 동기화 메소드는 동기화 된 void add () {}; num ++; try {thread.sleep (1000); } catch (InterpruptedException e) {System.out.println ( "Interrupted"); } system.out.println (num); }}} 클래스 두 개의 구현 실행 가능 {One = new One (); @override public void run () {one.add (); // 메소드를 호출}}} public class synch {public static void main (String [] args) {2 = new Two (); 스레드 T1 = 새 스레드 (2); // 세 개의 자식 스레드 작성 스레드 T2 = 새 스레드 (2); 스레드 T3 = 새 스레드 (2); t1.start (); t2.start (); t3.start (); }}참고 : 동기화 된 키워드 제거 결과 실행 결과의 차이를 관찰하십시오!
정상 작동 결과 :
11
12
13