자바 스레드 학습 노트 (2) 스레드 이상 처리
2530 단어 java 스레드
상황에서 우리는main() 방법에서 라인의 이상을 포착하지 못한다. 비례는 다음과 같다.
public class ExceptionThread implements Runnable{
@Override
public void run() {
throw new NullPointerException();
}
public static void main(String[] args) {
ExecutorService executorService = Executors.newCachedThreadPool();
try {
System.out.println(" ");
executorService.execute(new ExceptionThread());
} catch (Exception e) {
e.printStackTrace();
System.out.println(" ");
}
}
}
상술한 코드는main방법에서 루틴 이상을 포착할 수 없다. 그러면 우리는 어떻게 루틴의 이상 정보를 포착할 수 있을까?
다음은 이 코드를 보도록 하겠습니다.
/**
*
*/
class MyExceptionThread implements Thread.UncaughtExceptionHandler {
@Override
public void uncaughtException(Thread t, Throwable e) {
//
System.out.println(" ");
System.out.println(e);
}
}
/**
*
*/
class ExceptionThreadFactory implements ThreadFactory {
@Override
public Thread newThread(Runnable r) {
Thread thread = new Thread(r);
// 。
thread.setUncaughtExceptionHandler(new MyExceptionThread());
return thread;
}
}
/**
*
*/
class ExceptionThread2 implements Runnable{
@Override
public void run() {
try {
Thread.sleep(1000l);
} catch (InterruptedException e) {
e.printStackTrace();
}
//
throw new NullPointerException();
}
public static void main(String[] args) {
// ExceptionThreadFactory ,
ExecutorService executorService = Executors.newCachedThreadPool(new ExceptionThreadFactory());
try {
System.out.println(" ");
//
executorService.execute(new ExceptionThread2());
executorService.execute(new ExceptionThread2());
executorService.execute(new ExceptionThread2());
} catch (Exception e) {
e.printStackTrace();
System.out.println(" ");
}
}
}
위의 출력 결과는
java.lang.NullPointerException
java.lang.NullPointerException
java.lang.NullPointerException
결론은main()이라는 방법은 여전히 이상한 라인을 포착하지 못했다. 물론 이 설정은 합리적이다.현재 각 라인마다 자신의 이상 처리 메커니즘이 있는데 어떡하지, 문장, 하나의 라인을 만들 때 이 문장은 좋다~
일을 마치다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 스레드 동기화 잠금 선택스레드 동기화가 필요할 때 어떻게 적당한 스레드 자물쇠를 선택합니까? 예: 상수 풀에 저장할 수 있는 객체, String 객체 등을 선택합니다. 스레드 클래스: 원래는 스레드thread1과thread2가 동기화되고,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.