JAVA 에서 수호 라인 이 무엇 인지,비수 호 라인 이 무엇 인지 간단하게 이해 합 니까?

3297 단어 자바
자바 에서 데 몬 스 레 드 와 비 데 몬 스 레 드
  • 수호 라인 이 무엇 입 니까?비수 호 라인 이 무엇 입 니까?
  • 자바 는 두 가지 상태의 스 레 드
  • 가 있다.
  • 수호 라인 과 비수 호 라인 의 차이
  • 데 몬 스 레 드 와 비 데 몬 스 레 드 코드 의 차이 점
  • 데 몬 스 레 드 만 들 기
  • 수호 라인:주 라인 소각 정지,수호 라인 함께 소각
  • 비 수호 스 레 드:메 인 스 레 드 가 소각 되면 사용자 스 레 드 가 계속 실행 되 고 서로 영향 을 주지 않 습 니 다.

  • 수호 라인 이 무엇 입 니까?비수 호 라인 이 무엇 입 니까?
    자바 는 두 가지 상태의 스 레 드 가 있 습 니 다.
    1.데 몬 스 레 드(예 를 들 어 쓰레기 회수 스 레 드:gc 스 레 드)2.비 데 몬 스 레 드(사용자 스 레 드:사용자 스 레 드 는 우리 가 수 동 으로 만 든 스 레 드)
    데 몬 스 레 드 와 비 데 몬 스 레 드 의 차이
    1.수호 스 레 드 는 메 인 스 레 드 가 실 행 될 때 쓰레기 회수 스 레 드 가 함께 실 행 됩 니 다.메 인 스 레 드 가 소각 되면 메 인 스 레 드 와 함께 소각 합 니 다.2.비 수호 스 레 드 가 메 인 스 레 드 가 소각 되면 사용자 스 레 드 가 계속 실행 되 고 서로 영향 을 주지 않 습 니 다.
    데 몬 스 레 드 와 비 데 몬 스 레 드 코드 데모 차이
    수호 루틴 생 성
    public static void main(String[] args) throws InterruptedException {
    		Thread t1 = new Thread(new Runnable() {
    
    			public void run() {
    				while (true) {
    					try {
    						Thread.sleep(1000);
    
    					} catch (Exception e) {
    						// TODO: handle exception
    					}
    					System.out.println("     (    )");
    				}
    			}
    		});
    		//            ,                
    		t1.setDaemon(true);
    		t1.start();
    

    t1.start()전에 설정 해 야 합 니 다.실행 중인 일반적인 스 레 드 를 데 몬 스 레 드 로 설정 할 수 없습니다.그렇지 않 으 면 IllegalThreadState Exception 이상 을 알 릴 수 없습니다.
    수호 루틴:주 루틴 소각 정지,수호 루틴 함께 소각
    public static void main(String[] args) {
    		Thread t1 = new Thread(new Runnable() {
    			
    			public void run() {
    				while (true) {
    					try {
    						Thread.sleep(1000);
    
    					} catch (Exception e) {
    						// TODO: handle exception
    					}
    					System.out.println("     (    )");
    				}
    			}
    		});
    		//            ,                
    		t1.setDaemon(true);
    		//    
    		t1.start();
    		
    		//      
    		for (int i = 0; i < 10; i++) {
    			try {
    				Thread.sleep(300);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			System.out.println("main:i:" + i);
    		}
    		System.out.println("       ...");
    	}
    

    다음은 실행 결과 입 니 다.
    main:i:0
    main:i:1
    main:i:2
         (    )
    main:i:3
    main:i:4
    main:i:5
         (    )
    main:i:6
    main:i:7
    main:i:8
         (    )
    main:i:9
           ...
    

    메 인 스 레 드 가 끝 난 후에 데 몬 스 레 드 를 계속 실행 하지 않 았 고 데 몬 스 레 드 도 끝 났 습 니 다.같이 소각 하고 정지 합 니 다.
    비 수호 스 레 드:메 인 스 레 드 가 소각 되면 사용자 스 레 드 가 계속 실행 되 고 서로 영향 을 주지 않 습 니 다.
    public static void main(String[] args) {
    		Thread t1 = new Thread(new Runnable() {
    			
    			public void run() {
    				while (true) {
    					try {
    						Thread.sleep(1000);
    
    					} catch (Exception e) {
    						// TODO: handle exception
    					}
    					System.out.println("     (    )");
    				}
    			}
    		});
    		//    
    		t1.start();
    		
    		//      
    		for (int i = 0; i < 10; i++) {
    			try {
    				Thread.sleep(300);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    			System.out.println("main:i:" + i);
    		}
    		System.out.println("       ...");
    	}
    

    다음은 실행 결과 입 니 다.
    main:i:0
    main:i:1
    main:i:2
         (    )
    main:i:3
    main:i:4
    main:i:5
         (    )
    main:i:6
    main:i:7
    main:i:8
         (    )
    main:i:9
           ...
         (    )
         (    )
         (    )
         (    )
         (    )
         (    )
    。。。。。。。。。。。。。。。。。。。。。
    

    메 인 스 레 드 가 정지 되면 데 몬 스 레 드(사용자 스 레 드)가 끝나 지 않 고 계속 실행 되 며 메 인 스 레 드 와 서로 영향 을 주지 않 습 니 다.

    좋은 웹페이지 즐겨찾기