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
...
( )
( )
( )
( )
( )
( )
。。。。。。。。。。。。。。。。。。。。。
메 인 스 레 드 가 정지 되면 데 몬 스 레 드(사용자 스 레 드)가 끝나 지 않 고 계속 실행 되 며 메 인 스 레 드 와 서로 영향 을 주지 않 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.